(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0008】
ここにおいて、オペレーティングシステムのコンフィグレーション値の保護に関して検討される。デバイスのブートプロセスの最中には、デバイスに係る一つまたはそれ以上のオペレーティグシステムの少なくとも一部分によって使用されている一式のコンフィグレーション値、および、任意的に含まれるそのデバイスのプリオペレーティグシステム環境のコンポーネントによって使用される一つまたはそれ以上のコンフィグレーション値が、デバイスのポリシーに対してチェックされる。コンフィグレーション値がポリシーを満足する場合には、オペレーティグシステムがデバイス上で実行することが許可される、しかし、コンフィグレーション値がポリシーを満足しない場合には、一つまたはそれ以上の好適なアクションがとられる(例えば、オペレーティグシステムを実行しない、値を変更する、など)。ポリシーは、オペレーティグシステムおよびコンピューターデバイス上で実行されている他のアプリケーションによる不正な変更から保護する方法で、保管されている。しかしながら、一人以上のポリシー発行者は、ポリシーを更新することができ、経時的にポリシーの変更を許可する。
【0009】
ここにおいて、対称鍵暗号法(symmetric key cryptography)、公開鍵暗号法、そして、公開/秘密鍵ペア、が参照される。こうした鍵暗号法は当業者にとって周知であるが、ここでは、読者の手助けのために、こうした鍵暗号法の簡潔な概要が含まれている。公開鍵暗号法では、エンティティ(ユーザー、ハードウェアまたはソフトウェアコンポーネント、デバイス、ドメイン、といったもの)は、公開/秘密鍵ペアと関連付けられている。公開鍵は、公に利用可能にすることができるが、エンティティは、秘密鍵を秘密に保持している。秘密鍵がなければ、公開鍵を使用して暗号化されたデータを復号することは計算的に非常に難しい。よって、データは、公開鍵を持ったあらゆるエンティティによって暗号化することができるが、対応する秘密鍵を持ったエンティティによってのみ復号化することができる。加えて、データと秘密鍵を使用することによって、デジタル署名を生成することができる。秘密鍵がなければ、公開鍵を使用して検証することができる署名を生成することは計算的に非常に難しい。公開鍵を持ったあらゆるエンティティは、公開鍵、署名、および署名されたデータについての好適なデジタル署名検証アルゴリズムを実行することによって、そのデジタル署名を検証するために公開鍵を使用することができる。
【0010】
一方、対称鍵暗号法では、共有鍵(対称鍵としても言及される)が、2つのエンティティによって知られており、秘密に保持されている。共有鍵を持つあらゆるエンティティは、典型的には、その共有鍵で暗号化されたデータを復号することができる。共有鍵がなければ、その共有鍵で暗号化されたデータを復号することは計算的に非常に難しい。よって、2つのエンティティの両方が共有鍵を知っている場合は、それぞれがデータを暗号化し、他方が復号することができるが、他のエンティティが共有鍵を知らない場合には、他のエンティティはデータを復号することができない。同様に、共有鍵を持つエンティティは、データを暗号化し、同一のエンティティが復号できるが、他のエンティティがその共有鍵を知らない場合は、他のエンティティはデータを復号できない。加えて、鍵付きハッシュ(keyed−hash)メッセージ認証コードメカニズムといったものを使用して、対称鍵暗号法に基づいてデジタル署名を生成することができる。共有鍵を持つあらゆるエンティティは、デジタル署名を生成し、検証することができる。例えば、信頼された第三者は、特定のエンティティに係るアイデンティティ(identity)に基づいて対称鍵を生成することができ、その特定のエンティティのための署名の生成および検証の両方ができる(例えば、対称鍵を使用してデータを暗号化、または復号することによる)。
【0011】
図1は、本発明の一つまたはそれ以上の実施例に従って、オペレーティグシステムのコンフィグレーション値の保護を実行するデバイス100を示している。デバイス100は、ファームウェア102、オペレーティグシステムローダー(loader)104、および、オペレーティグシステムカーネル(kernel)106を含み、それぞれが、デバイス100が種々のオペレーションを実行できるようにする一つまたはそれ以上のコンポーネントまたはモジュールである。これらのコンポーネントまたはモジュールは、不揮発性メモリーまたはストレージデバイス(例えば、フラッシュメモリー、読出し専用メモリー(ROM)、磁気ディスク、光ディスク、ネットワークでアクセスされる離れたデバイスまたはストレージ、といったもの)の中に典型的に保管されるインストラクション及び/又はデータを含んでいる。これらのコンポーネントまたはモジュールは、不揮発性メモリーまたはストレージデバイスから一つまたはそれ以上の揮発性メモリー(例えば、ランダムアクセスメモリー(RAM))の中にロードされ、一つまたはそれ以上のプロセッサによって引き出され、実行される。
【0012】
デバイス100が、電源オン、または、さもなければリセットされる場合に、デバイス100はブートする。デバイス100のブートは、デバイス100の開始オペレーションを参照し、典型的には、デバイス100に係るオペレーティグシステムをロードし、実行する。デバイス100のブートは、典型的に、少なくとも2つのステージを含んでいる。第1のステージでは、プリオペレーティグシステム環境のコンポーネントが、デバイス100上にロードされ、実行される。プリオペレーティグシステム環境においては、種々のコンポーネントまたはモジュールが、オペレーティグシステムのブートを含む様々なオペレーションを実行している。第2のステージでは、オペレーティグシステム環境が、デバイス100上にロードされ、実行される。オペレーティグシステム環境では、デバイス100上でオペレーティグシステムが実行されている。
【0013】
コンポーネントのロードは、コンポーネントを揮発性(または、代替的には非揮発性)メモリーにコピーすること、および、任意的に、他のコンポーネントまたは保管データに対する追加のコンフィグレーションを実行することを参照する。コンポーネントの実行は、デバイス100にプロセッサまたはコントローラーによるコンポーネントのインストラクションの実行(実施)を参照する。デバイス100がブートされた後は、オペレーティグシステムによって、デバイス100上で、種々の他のプログラムが実行され得る。
【0014】
デバイス100は、種々の異なるタイプの物理的デバイスであってよい。例えば、デバイス100は、デスクトップコンピューター、ラップトップまたはノートブックコンピューター、ノートパッドまたはタブレットコンピューター、モバイルステーション、エンターテイメント装置、ディスプレイ装置と通信可能に接続されたセットトップボックス、テレビ、携帯電話または無線電話、ゲームコンソール、自動車用コンピューター、といったようなものである。デバイス100は、また、物理的デバイス上で実行される仮想マシンといった、仮想デバイスであってもよい。仮想マシンは、あらゆる種々の異なるタイプの物理的デバイス上で実行され得る。
【0015】
ブートプロセスの最中、ファームウェア102は、デバイス100によってロードされ、実行される。ファームウェア102は、デバイス100の不揮発性メモリーの中に保管される。ファームウェア102は、読出し専用メモリーの中に、または、代替的に、書き換え可能な不揮発性メモリー(フラッシュメモリーといったもの)の中に保管されてよい。ファームウェア102が、書き換え可能な不揮発性メモリーに保管される実施例においては、典型的に、そうしたファームウェア102が改ざんされていないこと(そして、悪意あるプログラムによって警告されていないこと)を保証するように手当てされる。こうした手当ては、例えば、書き換え可能な不揮発性メモリーに保管されたファームウェア102の署名を検証すること、ファームウェア102だけがアクセス可能な保護されたメモリーの中にファームウェア102を保管すること、従来の信頼されたブートまたは安全なブート技術を使用すること、といったようなものでされてよい。
【0016】
ファームウェア102は、オペレーティグシステムローダー104の実行を開始する。オペレーティグシステムローダー104は、典型的に、実行される前に、ファームウェア102によってロードされ、検証される。オペレーティグシステムローダー104は、異なる方法で検証され得る。オペレーティグシステムローダー104のデジタル署名(ファームウェア102が信頼するように構成された(例えば、プログラムされた)エンティティによって生成されたもの)を検証するといったことによるものである。
【0017】
オペレーティグシステムローダー104は、オペレーティグシステムカーネル106をロードし、実行する。オペレーティグシステムカーネル106は、典型的には、実行される前に、オペレーティグシステムローダー104によってロードされ、検証される。オペレーティグシステムカーネル106は、異なる方法で検証され得る。オペレーティグシステムカーネル106のデジタル署名(オペレーティグシステムローダー104が信頼するように構成された(例えば、プログラムされた)エンティティによって生成されたもの)を検証するといったことによるものである。オペレーティグシステムカーネル106は、次に、種々の異なるオペレーティグシステムのコンポーネント及び/又はユーザーモードのコンポーネントをロードし、実行する。これらのオペレーティグシステムのコンポーネントおよびユーザーモードのコンポーネントは、そうしたコンポーネントを実行させるユーザーのリクエストに応じて、もしくは、別のコンポーネントまたはモジュールからのリクエストに応じて実行され得る。
【0018】
オペレーティグシステムカーネル106は、種々のオペレーティグシステムコンフィグレーション値112に従って、獲得し、動作する。オペレーティグシステムコンフィグレーション値112は、オペレーティグシステムカーネル106によってアクセスされるように図示されているが、また、オペレーティグシステムローダー106、及び/又は、デバイス100の他のコンポーネントまたはモジュールによってもアクセスされ得る。オペレーティグシステムコンフィグレーション値112は、あらゆる種々の異なる情報であってよい。情報は、オペレーティグシステムカーネル106(及び/又はオペレーティグシステムローダー104)がどのように動作するか、オペレーティグシステムカーネル106(及び/又はオペレーティグシステムローダー104)の何のコンポーネントがロードされ、実行されるか、それらの組み合わせ、等といったものである。例えば、オペレーティグシステムコンフィグレーション値112は、オペレーティグシステムカーネル106(及び/又はオペレーティグシステムローダー104)が、信頼できないプログラムまたはコンポーネントがデバイス100上で実行されるのを許可するかどうか、または、オペレーティグシステムカーネル106(及び/又はオペレーティグシステムローダー104)が、デバイス100上で実行される前にプログラムまたはコンポーネントを認証するかどうか、についての指標であってよい。別の実施例として、オペレーティグシステムコンフィグレーション値112は、反マルウェア(anti−malware)アプリケーション(または特定の反マルウェアアプリケーション)がデバイス100上で実行されるのを許可するかどうかの指標であってよい。他の実施例として、オペレーティグシステムコンフィグレーション値112は、デバイス100上で実行される仮想マシンを管理する仮想マシンマネージャーのために使用される値または設定のコンフィグレーションの指標であってよい。さらなる別の実施例として、オペレーティグシステムコンフィグレーション値112は、使用されるべき特定のプロセッサまたはプロセッサコアの指標であってよい(例えば、実行不能としてマークされるべきメモリーの領域)。
【0019】
一つまたはそれ以上の実施例において、ファームウェア102とオペレーティグシステムローダー104は、実行前環境(ブート前環境またはプリオペレーティグシステム環境としても参照される)の一部として実行される。実行前環境は、オペレーティグシステムがブートを完了し、実行される以前に、デバイス100上で実行されている環境を指す。こうした実施例において、ファームウェア102とオペレーティグシステムローダー104は、デバイス100のネットワークインターフェイスカードといった、デバイス100のコンポーネント上(例えば、読出し専用メモリー(ROM)またはフラッシュメモリー)に保管され得る。代替的に、ファームウェア102とオペレーティグシステムローダー104は、実行前環境の最中に他のデバイスまたはサービスから獲得されてもよい。例えば、ファームウェア102とオペレーティグシステムローダー104は、別のデバイスまたはサービスからデバイス100に対して提供されるブートイメージの一部として含まれてよい。
【0020】
実行前環境は、種々の異なる方法で実行され、異なる従来技術に基づいてもよい。例えば、実行前環境は、ブート前実行環境(Preboot eXecution Environment(PXE))規格バージョン2.0または他のバージョンに従って実行されてもよい。別の実施例として、実行前環境は、ユニファイドエクステンシブルファームウェアインターフェイス(Unified Extensible Firmware Interface(UEFI))規格バージョン2.3または他のバージョンに従って実行されてもよい。さらなる他の実施例として、実行前環境は、種々の異なるパーソナルコンピューターベーシック入出力システム(basic input/output system(BIOS))のバージョンを使用して実行されてもよい。
【0021】
ブートプロセスの最中に、オペレーティグシステムローダー104は、ポリシー記録114を獲得する。ポリシー記録は、デバイス100が従うべき一つまたはそれ以上のポリシーの記録である。このポリシーの記録は、オペレーティグシステムコンフィグレーション値112が満足すべきコンフィグレーション設定または値を含んでいる。オペレーティグシステムローダー104は、ポリシー記録114における一つまたはそれ以上のポリシーをオペレーティグシステムコンフィグレーション値112と比較し、オペレーティグシステムコンフィグレーション値112がポリシー記録における一つまたはそれ以上のポリシーを満足している場合に、オペレーティグシステムカーネル106のコンポーネントの実行を開始する。しかしながら、一つまたはそれ以上のオペレーティグシステムコンフィグレーション値112がポリシー記録114におけるポリシーを満足しない場合には、好適な対応するアクションがとられる。オペレーティグシステムカーネル106をロードしない、オペレーティグシステムコンフィグレーション値112を変更する、などといった、種々の異なる対応するアクションがとられてよい。これらの対応するアクションは、以下に詳しく説明される。オペレーティグシステムローダー114は、こうして、オペレーティグシステムコンフィグレーション値112を保護し、悪意あるプログラムによってオペレーティグシステムコンフィグレーション値112が変更されてしまったかもしれない状況を特定している。
【0022】
一つまたはそれ以上の実施例において、ポリシー記録114における一つまたはそれ以上のポリシーは、また、デバイスのプリオペレーティグシステム環境の一つまたはそれ以上のコンポーネントが満足すべきコンフィグレーション設定または値を含んでいる。プリオペレーティグシステム環境によって満足されるべきこれらのコンフィグレーション設定は、プリオペレーティグシステム環境がどのように動作するか、プリオペレーティグシステム環境の何のコンポーネントがロードされ、実行されるか、それらの組み合わせ、等といった、あらゆる種々の異なる指標であってよい。これらのコンフィグレーション設定は、オペレーティグシステムコンフィグレーション値112の一部として含まれてよく、また、代替的には、他の設定またはちであってよい。例えば、これらのコンフィグレーション設定または値は、特定のオペレーティグシステムだけがロードされ、実行され得ることを規定することができる。
【0023】
図1には、単一のオペレーティグシステムカーネル106が示されているが、代替的には、デバイス100上で複数のオペレーティグシステムカーネル106がロードされ、実行されてよいことに留意すべきである。これらの異なるそれぞれのオペレーティグシステムカーネルは、それ自身のオペレーティグシステムコンフィグレーション値112とそれ自身のポリシー記録114(または、ポリシー記録114におけるそれ自身のポリシー)を有することができる。そして、オペレーティグシステムローダー104は、好適な一つまたはそれ以上のポリシーを、ブートされているオペレーティグシステムカーネル106のための好適なオペレーティグシステムコンフィグレーション値と比較する。代替的に、2つまたはそれ以上のこれらの異なるオペレーティグシステムカーネルは、オペレーティグシステムコンフィグレーション値112及び/又はポリシー記録114(及び/又はポリシー記録114の中のポリシー)の少なくとも一部を共有することができる。
【0024】
図2は、本発明の一つまたはそれ以上の実施例に従って、ポリシー200を示している。ポリシー200は、例えば、
図1のポリシー記録114におけるポリシーとして含まれてもよい。ポリシー200は、ポリシー識別子202、ポリシー親リスト204、および、一つまたはそれ以上のコンフィグレーション値及び/又は設定206、を含んでいる。ポリシー識別子202、ポリシー親リスト204、および、コンフィグレーション値及び/又は設定206、の一つまたはそれ以上をデジタルに署名することで、ポリシー200に関するデジタル署名208も、また、生成される。
【0025】
ポリシー識別子202は、ポリシー200を特定し、異なるポリシーをお互いから区別することができるようにする。ポリシー識別子200は、例えば、ポリシー200に対して割り当てられたグローバルユニークID(GUID)であってよい。ポリシー親リスト204は、ポリシー200が置き換えるゼロ個以上の他のポリシーのリストである。ポリシー親リストは、以下に詳細に説明するように、所定のタイプの攻撃の防御を促進する。
【0026】
コンフィグレーション値及び/又は設定206は、オペレーティグシステムコンフィグレーション値(例えば、
図1の値112)が満足すべき値を含んでいる。ンフィグレーション値及び/又は設定206は、また、ポリシー200における一つまたはそれ以上のコンフィグレーション値が、オペレーティグシステムコンフィグレーション値によって満足されない場合にとられる対応するアクションを含んでいる。一つまたはそれ以上のコンフィグレーション値及び/又は設定206は、以下に詳細に説明するように、任意的に、オペレーティグシステムローダーコンポーネントによって設定されてもよい。
【0027】
コンフィグレーション値及び/又は設定206は、また、一つまたはそれ以上の他のポリシーの識別子への参照を含んでいる。これらの一つまたはそれ以上の他のポリシーのコンフィグレーション値及び/又は設定は、ポリシー200の一部として含まれている。従って、ポリシー200は、一つまたはそれ以上の他のポリシーを有効に包含または含んでいる。コンフィグレーション値及び/又は設定206は、また、一人またはそれ以上のポリシー発行者の識別子を含んでもよい。従って、ポリシー記録(例えば、
図1のポリシー記録)にポリシーを追加することが許されている新たなポリシー発行者を、ポリシー200において特定することができる。
【0028】
図1に戻ると、オペレーティグシステムローダー104は、オペレーティグシステムコンフィグレーション値112が、ポリシー記録114における一つまたはそれ以上のポリシーを満足するかどうかをチェックする。ポリシー記録114は、単一のポリシーを含んでよく、以下により詳細に説明するように、一人またはそれ以上の異なるポリシー発行者によって変更され得る。代替的に、ポリシー記録114は、複数のポリシーを含むことができ、それぞれが一人またはそれ以上のポリシー発行者によって変更され得る。従って、例えば、異なるポリシー発行者は、ポリシー記録114において包含される異なるポリシー(彼らが後に変更することができる)を提供することができる。
【0029】
コンフィグレーション値は、種々の異なる方法において、ポリシーの中で特定され得る。一つまたはそれ以上の実施例において、ポリシーは、オペレーティグシステムコンフィグレーション値の名前(または他の識別子)を含む、ネームバリューペア(name−value pair)における値を特定し、ポリシーを満足するために有するべきそのオペレーティグシステムコンフィグレーション値の一つまたはそれ以上の値を特定する。他の実施例において、値は、順序、または、対応するオペレーティグシステムコンフィグレーション値に固有の他の構造、におけるポリシーの中に含まれている。
【0030】
オペレーティグシステムコンフィグレーション値112が、ポリシー記録114における一つまたはそれ以上のポリシーを満足するかどうかの判断は、異なる方法で実行され得る。一つまたはそれ以上の実施例においては、オペレーティグシステムコンフィグレーション値がポリシーを満足するかどうかを判断するために数学的な演算子が使用される。等しい、より大きい、より小さい、などといった、種々の異なる数学的な演算子が使用されてよい。他の実施例においては、オペレーティグシステムコンフィグレーション値がポリシーを満足するかどうかを判断するために他の演算子または論理的な公式が使用される。オペレーティグシステムコンフィグレーション値がポリシーにおける一式の値のうちの一つとして含まれているか、といった判断である。
【0031】
複数のポリシーがポリシー記録114の中に含まれている状況において、オペレーティグシステムコンフィグレーション値112がポリシー記録114におけるポリシーを満足するかどうかの判断は、オペレーティグシステムコンフィグレーション値112がポリシー記録114におけるそれぞれのポリシーを満足するかどうかを判断することである。従って、複数のポリシーは、オペレーティグシステムコンフィグレーション値112がポリシー記録114におけるポリシーを満足するかどうかを判断する目的のために、組合わされているものと見られてもよい。
【0032】
オペレーティグシステムコンフィグレーション値112がポリシー記録114を満足する場合に、オペレーティグシステムローダー104は、オペレーティグシステムカーネル106の実行を開始するように進行する。しかしながら、一つまたはそれ以上のオペレーティグシステムコンフィグレーション値112がポリシー記録114を満足しない場合には、ポリシー記録114を満足していない一つまたはそれ以上のオペレーティグシステムコンフィグレーション値に応じて好適なアクションがとられる。異なるオペレーティグシステムコンフィグレーション値に対してそれぞれ異なるアクションがとられてもよいし、また、複数のオペレーティグシステムコンフィグレーション値に対して同一のアクションがとられてもよい。これらの対応するアクションは、デバイス100上にそのオペレーティグシステムがロードされず、実行されないように、ブートプロセスを停止するアクションと同様に、デバイス100上にそのオペレーティグシステムがロードされ、実行されるように、ブートプロセスを継続することを許可するアクション、を含んでよい。
【0033】
一つまたはそれ以上の実施例において、とられるべき対応するアクションは、ポリシー記録114の中に含まれている。ポリシー記録114におけるそれぞれのポリシーは、そのポリシーの少なくとも一部分が満足されていない(例えば、特定のオペレーティグシステムコンフィグレーション値12がポリシーを満足していない)場合に、とられるべき対応するアクションの指標(例えば、
図2のコンフィグレーション値/設定の一部として)を含んでいる。他の実施例においては、対応するアクションが含まれており(例えば、コンフィグレーション値としてプログラムされ、または設定されている)、または、そうでなければ、オペレーティグシステムローダー104によって獲得される。
【0034】
対応するアクションは、ブートプロセスを停止することであってよい。つまり、オペレーティグシステムローダー104は、オペレーティグシステムカーネル106の実行を開始しないので、オペレーティグシステムは、デバイス100上にロードされず。実行されない。代替的に、対応するアクションは、ポリシーを満足しないオペレーティグシステムコンフィグレーション値112を無視して、代わりに別の値(例えば、ポリシーの中に含まれているもの)を使用してもよい。対応するアクションは、代替的に、オペレーティグシステムコンフィグレーション値112をポリシーからの値(または、そうでなければポリシーによって特定された値)で書き換え、ブートプロセスの継続を許してもよい。対応するアクションは、代替的に、オペレーティグシステムコンフィグレーション値112を使用し、ブートプロセスの継続を許可するが、イベントをレポートすることでもよい。オペレーティグシステムコンフィグレーション値112がポリシーを満足しないという通知を記録または(例えば、別のコンポーネント、デバイス、またはサ−ビスに対して)送付するといったものである(特定のオペレーティグシステムコンフィグレーション値及び/又はポリシーの表示が通知の中に含まれ得る)。
【0035】
対応するアクションは、代替的に、デバイス100のユーザーを促すことであってよい(例えば、ブートプロセスを進めるためにユーザーの許可を受取ること)。この働きかけは、例えば、ユーザーに現在のオペレーティグシステムコンフィグレーション値を許可するようにリクエストする促しであってよい。この働きかけは、また、ポリシーを満足するためにあるべきコンフィグレーション値の指示を含んでもよい。そして、ユーザーは、現在のオペレーティグシステムコンフィグレーション値を使用して進行することを許可する(または許可しない)ための種々の異なる入力を提供し得る。ボタンまたはキーを押す、スクリーンの所定の位置に触れる、音声入力を提供する、オペレーティグシステムローダー104によって信頼された(または検証され得る)セキュリティトークン(security token)を提供する、などといったことである。オペレーティグシステムローダー104は、入力が、離れたデバイスよりむしろ、デバイス100のユーザーから受取ったものであること(例えば、デバイス100のキーボード、タッチスクリーン、マイクロフォン、等から受取ったもの)の検証を行う(例えば、ユーザー入力が、離れたデバイスから受取ったリクエストよりむしろ、キー押し又はマイクロフォンから受取ったユーの入力であることを検証する)。従って、そうした状況においては、ユーザーがデバイス100のところに居て、ブートプロセスの継続を許可する場合に限って、ブートプロセスが継続され得る。つまり、悪意あるデバイスまたはデバイス100の悪意あるコンポーネントは、ブートプロセスの継続を許可することができない。
【0036】
ポリシー記録114は、オペレーティグシステムローダー104はポリシー記録114を変更することができるが、オペレーティグシステムローダー104の後に実行されるコンポーネント(他のオペレーティグシステムコンポーネント及び/又はユーザーモードコンポーネントと同様に特定のオペレーティグシステムカーネル106におけるもの)はポリシー記録114を変更することができないという、安全な方法で維持される。ポリシー記録114は、このセキュリティを反映するように破線で囲まれて示されている。ポリシー記録114は、種々の異なる方法において、この安全な方法で維持されてよい。
【0037】
一つまたはそれ以上の実施例において、ポリシー記録114は、不揮発性ランダムアクセスメモリー(NVRAM)といった、書込み可能な不揮発性メモリーの中に保管されてよい。書込み可能なNVRAMは、特定の条件下及び/又は特定の時間においてしかアクセスできない。一つまたはそれ以上の実施例において、書込み可能なNVRAMは、トラステッドプラットフォームモジュール(Trusted Platform Module:TPM)を介してアクセスされる。TPMに関する追加の情報は、オレゴン州ビーバートンの、トラステッドコンピューティンググループから利用可能である。TPMは、所定の時点まで、または、所定のイベントが発生するまで、書込み可能なNVRAMの読出しと書込みを許可し、その後、TPMは、その書込み可能なNVRAMの読出しを許可し、書込みを不許可にする。この所定の時点、または、所定のイベント発生は、例えば、書込み可能なNVRAMをクローズまたはロックするためのコンポーネントからのリクエストであり得る。従って、オペレーティグシステムローダー104は、書込み可能なNVRAMの中のポリシー記録114に対して変更を行うことができ、次に、書込み可能なNVRAMをロックさせることができる。オペレーティグシステムローダー114は、このようにして、書込み可能なNVRAMがロックされているので、悪意あるプログラムがポリシー記録114を改ざんすることを防ぐことができる。次回にデバイス100がブートされるとき、書込み可能なNVRAMはロック解除されるが、オペレーティグシステムローダー104は、悪意あるプログラムが実行されて書込み可能NVRAMに書き込む前に、再び書込み可能なNVRAMをロックする。同様に、他のタイプの記録媒体(例えば、磁気ディスクドライブ)が、特定の条件下及び/又は特定の時点でのみアクセスされるように、実施されてもよい。
【0038】
代替的に、ポリシー記録114は、他の技術を使用した安全な方法で維持されてもよい。変更が信頼できるエンティティによって署名されている場合にのみポリシー記録114の変更を許可する保護されたインターフェイス(例えば、アプリケーションプログラミングインターフェイス(API))を通じてだけアクセス可能なポリシー記録114による、といったものである。そうした信頼できるエンティティとは、オペレーティグシステムローダー104によって信頼されたエンティティである(例えば、オペレーティグシステムローダー104によって信頼に値するものとして知られ、かつ、オペレーティグシステムローダー104が公開鍵を有しているエンティティ)。例えば、ポリシー記録114は、UEFI署名済みの値として保管され得るもので、変更が信頼されたエンティティによって署名されている場合にのみ変更することができる。ポリシー記録に対してリクエストされたあらゆる変更は、信頼されたエンティティによって署名されたものであるとして検証され、信頼されたエンティティによる署名である場合に、そうした変更がなされるが、信頼されたエンティティによる署名ではない場合には、変更されない。
【0039】
別の実施例として、デバイス100が仮想マシンとして実施されている状況において、ポリシー記録114は、デバイス上の一つまたはそれ以上の仮想マシンのオペレーティグシステムを管理する仮想マシンマネージャーによって、安全な方法で維持されてもよい。仮想マシンマネージャーは、オペレーティグシステムローダー104が、しかしながら他のコンポーネントではなく、ポリシー記録114においてポリシーを変更することを許可する。
【0040】
ポリシー記録114に対する変更は、ポリシー記録114にポリシーを追加すること、ポリシー記録114からポリシーを除去すること、及び/又は、ポリシー記録114におけるポリシーを新たなポリシーと置き換えること、を含む。一つまたはそれ以上の実施例において、ポリシー記録114に対する変更は、そうした変更が信頼されたポリシー発行者から受取ったものである場合に、オペレーティグシステムローダー104によって実行される(例えば、変更は、オペレーティグシステムローダー104により信頼されたポリシー発行者によってデジタル署名される)。ポリシー記録114におけるポリシーを変更するリクエストは、異なる方法で、オペレーティグシステムローダー114に対して提供されてよい。一つまたはそれ以上の実施例において、オペレーティグシステムカーネル106またはデバイス100上で実行されている別のコンポーネントは、ポリシーに対する変更を、デバイス100の次回のブートにおいてオペレーティグシステムローダー104にアクセス可能な存続する場所に保管する。デバイス100の次回のブートでは、適切である場合には、オペレーティグシステムローダー104は、変更を獲得し、変更を実行する。オペレーティグシステムカーネル106またはデバイス100上で実行されている他のコンポーネントは、また、変更に伴なう特定のタイプの変更に対するリクエストを保管することができる(例えば、特定のポリシーが除去され、または、別のポリシーを置き換えるという指示)。代替的に、特定のタイプの変更に対するリクエストは固有のものであってよい(例えば、存続する場所における保管されたポリシーの存在は、オペレーティグシステムローダー104によって、そのポリシーをポリシー記録114に追加するリクエストであると考えられる)。
【0041】
オペレーティグシステムローダー114は、(ポリシー発行者からの)ポリシーを除去するリクエストに応じて、ポリシー記録114からポリシーを取り除いてもよい。オペレーティグシステムローダー104は、リクエストが、信頼されたエンティティであるポリシー発行者からのものであることを検証し、リクエストが信頼されたエンティティであるポリシー発行者からのものである場合にポリシーを除去し、リクエストが信頼されたエンティティであるポリシー発行者からのものではない場合にはポリシーを除去しない。
【0042】
同様に、オペレーティグシステムローダー114は、(ポリシー発行者からの)ポリシーを追加するリクエストに応じて、ポリシー記録114からポリシーを追加してもよい。オペレーティグシステムローダー104は、新たなポリシー(および任意的にリクエスト)が、信頼されたエンティティであるポリシー発行者からのものであることを検証し、新たなポリシー(および任意的にリクエスト)が信頼されたエンティティであるポリシー発行者からのものである場合にポリシーを追加し、新たなポリシー(及び/又は任意的にリクエスト)が信頼されたエンティティであるポリシー発行者からのものではない場合にはポリシーを追加しない。
【0043】
加えて、オペレーティグシステムローダー104は、ポリシー記録114におけるポリシー(ポリシーの現在のバージョンとしても参照される)を、新たなポリシー(ポリシーの新たなバージョンとしても参照される)に置き換えることができる。新たなポリシーを受取った場合は、オペレーティグシステムローダー104は、新たなポリシー(および任意的にリクエスト)が信頼されたエンティティであるポリシー発行者からのものであることを検証する。新たなポリシー(及び/又は任意的にリクエスト)が信頼されたエンティティあるポリシー発行者からのものでない場合は、オペレーティグシステムローダー114は、現在のポリシーのバージョンを新たなポリシーのバージョンと置き換えない。
【0044】
しかしながら、新たなポリシー(および任意的にリクエスト)が信頼されたエンティティであるポリシー発行者からのものである場合は、オペレーティグシステムローダー114は、新たなバージョンのポリシーが、本当にポリシーの現在のバージョンの、より新しいバージョンであるかどうかをチェックする。オペレーティグシステムローダー104は、現在のポリシーのバージョンが、ポリシーの新たなバージョンに係る親リストの中に含まれているかどうかをチェックすることによって、ポリシーのその新たなバージョンが、本当にポリシーの現在のバージョンよりも新たなバージョンであるかどうかをチェックする。ポリシーの新たなバージョンは、新たなポリシーのバージョンに置き換えられた、同一のポリシー発行者によって発行されたゼロまたはそれ以上の以前のポリシーを特定するポリシー親リストを含んでいる。ポリシー親リストは、ポリシー識別子(例えば、GUID)によって以前のポリシーを特定することができる。ポリシーの新たなバージョンが信頼されたエンティティであるポリシー発行者からのものであり、ポリシーの現在のバージョンが、ポリシーの新たなバージョンに係るポリシー親リストの中に含まれる場合には、オペレーティグシステムローダー104は、ポリシーの現在のバージョンを、ポリシーの新たなバージョンに置き換える。そうでなければ、オペレーティグシステムローダー104は、ポリシーの現在のバージョンを、ポリシーの新たなバージョンに置き換えない。
【0045】
ポリシー親リストの使用は、悪意あるプログラムまたはユーザーによるロールバック(rollback)またはリプレイアタック(reply attack)に対する保護を促進するものであることに留意すべきである。例えば、悪意あるプログラムまたはユーザーは、ポリシーの現在のバージョン(例えば、新たなセキュリティ関連の値または設定を含む)をポリシーのより古いバージョンと置き換えようとするかもしれない(例えば、古いバージョンは、悪意あるプログラムまたはユーザーがデバイス100のコンポーネントに対する不適当なアクセスを得ることを許してしまう期限の切れたセキュリティ関連の値または設定を含んでいる)。ポリシーの現在のバージョンが、ポリシーの新たなバージョンに係るポリシー親リストの中に含まれている場合に限って、ポリシーの現在のバージョンを新たなポリシーと置き換えることによって、オペレーティグシステムローダー104は、ポリシーの現在のバージョンが、ポリシーのより古いバージョンによって置き換えられないことを保証する。ポリシーのより古いバージョンが、信頼されたエンティティであるポリシー発行者によって利用可能となったとしても、ポリシーのより古いバージョンは、ポリシーの現在のバージョンを含む親リストを有さない、従って、オペレーティグシステムローダー104は、ポリシーの現在のバージョンをポリシーのより古いバージョンに置き換えることはない。
【0046】
加えて、一つまたはそれ以上の実施例において、ポリシー記録114への変更は、デバイス100のユーザーまたは他の信頼されたエンティティといった、プリオペレーティグシステム環境(例えば、オペレーティグシステムローダー104及び/又はファームウェア102によって信頼されたもの)によって信頼されたエンティティによって許可された場合にのみ、オペレーティグシステムローダー114により実行される。エンティティがデバイス100のユーザーである場合、オペレーティグシステムローダー104は、デバイス100のユーザーが変更を許可するように促す。デバイス100の(または接続された)スクリーン上に視覚的なプロンプト(prompt)を表示したり、デバイス100の(または接続された)スピーカーで音響的なプロンプトを再生したり、といったようなことを行う。ユーザーはポリシーに対する変更を、ボタンまたはキーを押す、スクリーンの所定の場所を触る、音声入力する、などといった、種々の異なる入力を提供することによって許可することができる。オペレーティグシステムローダー104は、その入力がデバイス100のユーザーから受取ったものであり(例えば、デバイス100のキーボード、タッチスクリーン、マイクロフォン、等から受取ったこと)、離れたデバイスから受取ったものではないことを検証する(例えば、ユーザー入力が、離れたデバイスから受取ったリクエストではなくて、キー押しまたはローカルなマイクロフォンからの受取ったものであることを検証する)。従って、そうした状況においては、ユーザーがデバイス100のところに居て、変更を許可する場合に限って、ポリシー記録114に対する変更が実行され得る。つまり、悪意あるデバイスまたはデバイス100の悪意あるコンポーネントは、そうした変更を許可することができない。
【0047】
エンティティが、プリオペレーティグシステム環境(ユーザー以外)によって信頼された別のエンティティである場合は、ポリシー記録114に対する変更はエンティティによってデジタル署名される。オペレーティグシステムローダー104は、デジタル署名を検証し、デジタル署名がプリオペレーティグシステム環境によって信頼されたエンティティ(例えば、オペレーティグシステムローダー104によって信頼されたもの)からのものであることが検証された場合にのみポリシー記録114への変更を実行する。デジタル署名が検証できない場合は、ポリシー記録114への変更は行われない。
【0048】
一つまたはそれ以上の実施例において、ポリシー記録114におけるポリシーは、関連のタイムスタンプを有している(例えば、日付と時刻)。ポリシーに関連するタイムスタンプは、ポリシーの一部として含まれてもよいし、また、代替的には、分離して維持されてもよい。例えば、分離したポリシー識別子およびタイムスタンプの記録は、オペレーティグシステムローダー104によって維持されてよく、この記録は安全な方法で維持される(例えば、上述の安全な方法で維持されているポリシー記録114におけるポリシー、と類似する種々の異なる安全な方法である)。
【0049】
オペレーティグシステムローダー104は、ポリシー記録114を変更するかどうかの判断において(例えば、ポリシーの新たなバージョンが、本当にポリシーの現在のバージョンより新しいバージョンかどうかの判断)、こうしたタイムスタンプを使用することができる。ポリシー発行者は、ポリシーの両方のバージョンに対する同一であるが、異なるタイムスタンプの識別子を使用して、ポリシーの一つのバージョンを、そのポリシーの新たなバージョンに置き換えることができる。オペレーティグシステムローダー104は、ポリシーの新たなバージョン(および、任意的にポリシーを変更するリクエスト)が信頼されたエンティティであるポリシー発行者からのものであるかどうか、および、ポリシーの新たなバージョンがポリシーの現在のバージョンより最近のタイムスタンプを有しているかどうか、をチェックする。ポリシーの新たなバージョンが信頼されたエンティティであるポリシー発行者からのものであり、かつ、ポリシーの新たなバージョンがポリシーの現在のバージョンより最近のタイムスタンプを有している場合には、オペレーティグシステムローダー104は、ポリシーの現在のバージョンをポリシーの新たなバージョンに置き換える。そうでなければ、オペレーティグシステムローダー104は、ポリシーの現在のバージョンをポリシーの新たなバージョンには置き換えない。ポリシーの現在のバージョンとポリシーの新たなバージョンは同一のポリシー識別子を有するので、ポリシーの現在のバージョンをポリシーの新たなバージョンと置き換えるかどうかの判断は、ポリシーの新たなバージョンの親リストよりむしろ、ポリシーのバージョンのタイムスタンプに基づくものである。
【0050】
同様に、ポリシー記録114におけるポリシーは、ポリシー発行者によって割り当てられた関連のバージョン番号を有してもよい。ポリシーのバージョン番号は、ポリシーのそれぞれの新たなバージョンに対して増加される(また、セットでの次のバージョン番号が選択される)。バージョン番号は、タイムスタンプと類似に使用することができるが、それは、タイムスタンプ以外の数字(及び/又は他のキャラクター)である。
【0051】
代替的に、オペレーティグシステムローダー104は、ポリシー記録114を変更するかどうかを判断するのにタイムスタンプ及び/又はバージョン番号を使用する必要がない。そうした状況において、ポリシー発行者がポリシーの一つのバージョンをそのポリシーの新たなバージョンに置き換えようとする場合、ポリシー発行者は、ポリシーの2つのバージョンに対して異なるポリシー識別子を使用し、ポリシーの新たなバージョンの親リストにおいて置き換えられるべきポリシーのバージョンに係るポリシー識別子を含んでいる。
【0052】
一つまたはそれ以上の実施例において、ポリシー記録114への変更は、また、ブートプロセスの最中にオペレーティグシステムローダー104によって書き込まれた値を含んでいる。ポリシーにおける特定のコンフィグレーション設定のために、オペレーティグシステムローダー104は、ブートプロセスの最中に、デバイス100における一つまたはそれ以上の現在の値を獲得する。これらの獲得された値または設定は、ポリシーの一部(または、そうでなければ関連するもの)として保管され、デバイス100の次回のブートにおいて満足されるべきポリシーの一部として取り扱われる。従って、オペレーティグシステムローダー104は、デバイス100の次回のブートにおいて、これらの獲得された値または設定がオペレーティグシステムコンフィグレーション値112によって満足されるかを検証する。
【0053】
どの設定が、ブートプロセスの最中に獲得された現在の値または設定を有しているかは、異なる方法において特定されてよい。例えば、ポリシーは、特定の値がブートプロセスの最中にオペレーティグシステムローダー104によって獲得され、保管されたものであることを示す設定を含み得る。別の実施例として、オペレーティグシステムローダー104は、ブートプロセスの最中にオペレーティグシステムローダー104によって獲得され、保管されるべき特定の値の指標を伴なって構成することができ(例えば、指標を伴なってプログラムされる)、そうでなければ、指標を獲得することができる。別の実施例では、オペレーティグシステムローダー104は、いつデバイス100のセキュリティが強化または改善されたか(例えば、反マルウェアプログラムがインストールされたとき、ファイアーウォールプログラムがインストールされたとき、など)を検知することができ、その強化または改善されたセキュリティに関連する値または設定を獲得し、保管する(例えば、反マルウェアプログラムの指標を獲得し保管する)。
【0054】
デバイス100は複数回ブートされ得るので、それら複数のブートプロセスのうちのどれが、その最中に値が獲得され、保管されるべきブートプロセスであるのかは、異なる方法で特定されてよい。値は、既にある値が獲得され保管されていることなく(または、既に獲得され保管されるべき値が見つからない場合に)、最初にデバイス100がブートされる最中に獲得され保管されてよい。代替的に、オペレーティグシステムローダー104は、デバイス100のどのブートにおいて値が獲得され保管されるべきかの指標を伴なって構成することができ(例えば、指標を伴なってプログラムされる)、そうでなければ、指標を獲得することができる。代替的には、ポリシー記録114におけるポリシーは、デバイス100のどのブートにおいて値が獲得され保管されるべきかの指標を含んでよい。
【0055】
代替的に、オペレーティグシステムローダー104に対して、(例えば、現在のブートプロセスの最中、または、デバイス100の次回のブートにおいて)その値が獲得され保管されるべきであるということを示すユーザー入力が受取られてもよい。ユーザー入力は、ボタンまたはキーを押す、スクリーンの所定の場所を触る、音声入力する、などといった、種々の異なる方法で提供することができる。オペレーティグシステムローダー104は、入力が、離れたデバイスよりむしろ、デバイス100のユーザーから受取ったものであることの検証を行う(例えば、ユーザー入力が、離れたデバイスから受取ったリクエストよりむしろ、キー押し又はマイクロフォンから受取ったユーの入力であることを検証する)。従って、そうした状況においては、ユーザーがデバイス100のところに居て、そうした獲得と保管を許可する場合に限って、値を獲得し保管するリクエストが実行され得る。つまり、悪意あるデバイスまたはデバイス100の悪意あるコンポーネントは、そうした値の獲得と保管を許可することができない。
【0056】
図3は、本発明の一つまたはそれ以上の実施例に従って、オペレーティグシステムのコンフィグレーション値の保護を実行するプロセス300を説明するフローチャートである。プロセス300は、
図1のデバイス100といった、デバイスによって実行され、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせにおいて実施されてよい。プロセス300は、デバイス上でオペレーティグシステムが実行される以前に、デバイス上のプリオペレーティグシステム環境の一部として実行される。プロセス300は、一式のアクト(act)として示されるが、種々のアクトのオペレーションの実行のために示された順序には限定されない。プロセス300は、オペレーティグシステムコンフィグレーション値を保護するプロセスの実施例である。オペレーティグシステムコンフィグレーション値の保護に係る追加的な説明は、異なる図に関して、ここにおいて含まれる。
【0057】
プロセス300において、オペレーティグシステムのためのコンフィグレーション設定及び/又は値を特定するポリシーが獲得される(アクト302)。ポリシーは、オペレーティグシステムローダーによって変更され得るが、上述のように、オペレーティグシステムは、ポリシーを変更することができない。
【0058】
ポリシーは、オペレーティグシステムによって使用されたコンフィグレーション値と比較され(アクト304)、オペレーティグシステムによって使用されたコンフィグレーション値がポリシーを満足するかどうかがチェックされる(アクト306)。オペレーティグシステムによって使用されたコンフィグレーション値がポリシーを満足するかどうかは、上述のように、種々の異なる方法において判断され得る。
【0059】
コンフィグレーション値がポリシーを満足する場合は、オペレーティグシステムは、そのコンフィグレーション値を使用してブートすることが許される(アクト308)。しかしながら、コンフィグレーション値がポリシーを満足しない場合は、対応するアクションがとられる(アクト310)。上述のように、種々の異なった対応するアクションがとられ得る。
【0060】
図4は、本発明の一つまたはそれ以上の実施例に従って、デバイスにおいてポリシーを変更するプロセス400を説明するフローチャートである。プロセス400は、
図1のデバイス100といった、デバイスによって実行され、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせにおいて実施されてよい。プロセス400は、デバイス上でオペレーティグシステムが実行される以前に、デバイス上のプリオペレーティグシステム環境の一部として実行される。プロセス400は、一式のアクトとして示されるが、種々のアクトのオペレーションの実行のために示された順序には限定されない。プロセス400は、デバイスにおいてポリシーを変更するプロセスの実施例である。デバイスにおけるポリシーの変更に係る追加的な説明は、異なる図に関して、ここにおいて含まれる。
【0061】
プロセス400においては、オペレーティグシステムが実行されるために、オペレーティグシステムによって満足されるべき、オペレーティグシステムのためのコンフィグレーション設定及び/又は値を特定するポリシーに対する変更が受取られる(アクト402)。上述のように、オペレーティグシステムは、ポリシーを変更することができない。
【0062】
ポリシーに対する変更が、信頼されたエンティティによって許可されたものであるかどうかについてチェックされる(アクト404)。そうした信頼されたエンティティは、プリオペレーティグシステム環境(例えば、オペレーティグシステムローダー)によって信頼されたエンティティであり、このチェックは、ユーザーに変更を許可するように促すことにより、または、上述のように、変更が信頼されたエンティティによってデジタル署名されていることを検証することによって行われる。変更が信頼されたエンティティによって許可されない場合は、ポリシーは変更されない。しかしながら、変更が信頼されたエンティティによって許可される場合は、アクト402において受取った変更に従って、ポリシーが変更される(アクト406)。信頼されたエンティティの許可に加えて、タイムスタンプ、親リスト、などのチェックといった、種々の他の検証またはチェックも、また、上述のように、ポリシーを変更する前に実行され得る。
【0063】
ここにおいて説明されたオペレーティグシステムコンフィグレーション値を保護する技術は、種々の利用シナリオをサポートする。例えば、オペレーティグシステムコンフィグレーション値およびポリシーは、種々の製造者または開発者のうちの一つからの反マルウェアプログラムがデバイス上で実行されるべきであり、かつ、そうしたソフトウェア対抗プログラムがデバイス上で実行されていなければ、そのオペレーティグシステムをデバイス上にロードし実行するべきではない、と指示することができる。悪意あるプログラムが、オペレーティグシステムをロードし実行するために、反マルウェアプログラムがデバイス上で実行される必要はないものと示して、オペレーティグシステムコンフィグレーション値を変更しようと試みる場合には、次回デバイスがブートされると、オペレーティグシステムローダーコンポーネントが、オペレーティグシステムコンフィグレーション値がポリシーを満足しないことを検知するので、反マルウェアプログラムなしで、オペレーティグシステムがロードされ実行されることはない。
【0064】
別の実施例として、デバイスは、デフォルトのオペレーティグシステムポリシーを伴なって、製造者または販売者から出荷されてよい。デバイスの購入者は、エンタープライズ環境(例えば、会社またはホームネットワークの一部として)においてデバイスを使用し、彼または彼女が持ちたいと望むエンタープライズポリシーをデフォルトのオペレーティグシステムポリシーの代わりに使用したいと望んでもよい。このエンタープライズポリシーは、デフォルトのオペレーティグシステムポリシーとは異なるセキュリティ関連の設定などを有することができ、エンタープライズポリシーは、デフォルトオペレーティグシステムポリシーの識別子を含む親リストを有する。エンタープライズ環境のアドミニストレーターは、信頼されたエンティティであり得るし、エンタープライズポリシーに対してデジタル署名を生成でき、オペレーティグシステムローダーに対して提供される。エンタープライズポリシーは、信頼されたエンティティによって署名され、親リスト上のデフォルトオペレーティグシステムを特定するので、エンタープライズポリシーは、ポリシー記録におけるデフォルトオペレーティグシステムポリシーを置き換える。しかしながら、後続のデフォルトオペレーティグシステムポリシーがエンタープライズポリシーを置き換えることはない。後続のデフォルトオペレーティグシステムポリシーは、その親リスト上にエンタープライズポリシーを特定しないだろうからである。
【0065】
図5は、本発明の一つまたはそれ以上の実施例に従って、オペレーティグシステムのコンフィグレーション値の保護を実行するように構成されたコンピューティングデバイス500を示している。コンピューティングデバイス500は、例えば、
図1のデバイス100であり、または、デバイス100が実施される仮想マシンを実行することができる。
【0066】
コンピューティングデバイス500は、一つまたはそれ以上のプロセッサまたは処理装置502、一つまたはそれ以上のメモリー及び/又はストレージコンポーネント506を含む一つまたはそれ以上のコンピューターで読み取り可能な媒体504、一つまたはそれ以上の入力/出力(I/O)デバイス508、および、種々のコンポーネントおよびデバイスがお互いに通信できるようにするバス510、を含んでいる。コンピューターで読み取り可能な媒体504及び/又は一つまたはそれ以上のI/Oデバイス508は、コンピューターデバイス500の一部として、または、代替的には、コンピューターデバイスに接続されているものとして、含まれ得る。バス510は、一つまたはそれ以上のいくつかのタイプのバス構成を表している。メモリーバスまたはメモリーコントローラー、ペリフェラルバス、加速グラフィックポート、プロセッサ、または、ローカルバスといった、種々の異なるバス構成を使用したものを表している。バス510は、有線及び/又は無線のバスを含んでよい。
【0067】
メモリー/ストレージコンポーネント506は、一つまたはそれ以上のコンピューターストレージ媒体を表している。コンポーネント506は、揮発性媒体(ランダムアクセスメモリー(RAM)といったもの)、及び/又は、不揮発性媒体(読出し専用メモリー(ROM)、フラッシュメモリー、光ディスク、磁気ディスク、などといったもの)を含んでよい。コンポーネント506は、固定媒体(例えば、RAM、ROM、固定ハードドライブ、等)、同様に取出し可能媒体(例えば、フラッシュメモリー、取出し可能ハードドライブ、光ディスク、など)を含んでもよい。
【0068】
ここにおいて説明された技術は、一つまたはそれ以上の処理ユニット502によって実行されるインストラクションを伴なって、ソフトウェアで実施されてもよい。異なるインストラクションは、コンピューティングバイス500の異なるコンポーネントの中に保管されてもよいことが正しく理解されるべきである。処理ユニット502の中、処理ユニット502の種々のキャッシュメモリーの中、デバイス500(図示なし)の他のキャッシュメモリーの中、他のコンピューターで読み取り可能な媒体上、などといったものである。加えて、コンピューティングデバイス500の中でインストラクションが保管された場所は、時間の経過で変更し得ることも理解されるべきである。
【0069】
一つまたはそれ以上の入力/出力デバイス508によって、ユーザーは、コンピューティングデバイス500に対してコマンドおよび情報を入力することができ、また、情報が、ユーザー及び/又は他のコンポーネントまたはデバイスに対して表示されることができる。入力デバイスの例は、キーボード、カーソルコントロールデバイス(例えば、マウス)、マイクロフォン、スキャナー、などを含んでいる。出力デバイスの例は、ディスプレイ装置(例えば、モニターまたはプロジェクター)、スピーカー、プリンター、ネットワークカード、などを含んでいる。
【0070】
種々の技術が、ソフトウェアまたはプログラムモジュールの一般的な内容で、ここにおいて説明された。一般的に、ソフトウェアは、ルーチン、プログラム、アプリケーション、オブジェクト、コンポーネント、データ構造、などといった所定のタスクを実行するもの、または所定の抽象的なデータタイプを実行するものを含む。これらのモジュールおよび技術の実施は、コンピューターで読み取り可能な媒体のいくつかの形式で保管され、または媒体にわたり伝送される。コンピューターで読み取り可能な媒体は、コンピューティングデバイスによってアクセスすることができる、あらゆる利用可能な媒体またはメディアであってよい。実施例として、かつ、限定するものではなく、コンピューターで読み取り可能な媒体は、「コンピューターストレージ媒体(“computer storgae media”)」および「コミュニケーション媒体(“communications media”)」を含み得る。
【0071】
「コンピューターストレージ媒体」は、コンピューターで読み取り可能なインストラクション、データ構造、プログラムモジュール、または、他のデータといった情報を保管するためのあらゆる方法または従来技術において実施される、揮発性および不揮発性媒体、取出し可能および取出し不能媒体を含む。コンピューターストレージ媒体は、これらに限定されるわけではないが、RAM、ROM、EEPROM、フラッシュメモリー、または他のメモリー技術、CD−ROM、デジタル多目的ディスク(DVD)、磁気カセット、磁気テープ、磁気ディスクストレージまたは磁気ストレージデバイス、または、所望の情報を保管するために使用でき、コンピューターによってアクセスされ得る他のあらゆる媒体、を含んでいる。
【0072】
「コミュニケーション媒体」は、典型的には、コンピューターで読み取り可能なインストラクション、データ構造、プログラムモジュール、または、搬送波または他の伝送メカニズムといった、変調されたデータ信号における他のデータ、を包含する。コミュニケーション媒体は、また、あらゆる情報配送媒体を含む。用語「変調されたデータ信号(“modulated data signal”)」は、一つまたはそれ以上の特徴セットを有する信号、または信号中の情報をエンコードするといった方法で変更された信号を意味する。実施例として、かつ、限定するものではなく、コミュニケーション媒体は、有線ネットワークまたは直接有線接続といった有線媒体、および、音響、RF、赤外線、そして他の無線媒体といった、無線媒体を含む。上記のあらゆる組み合わせも、コンピューターで読み取り可能な媒体の範囲内に含まれる。
【0073】
一般的に、ここにおいて説明されたあらゆる機能または技術は、ソフトウェア、ハードウェア(例えば、固定のロジック回路)、マニュアル処理、またはこれらの組み合せ、を使用して実行され得る。用語「モジュール」および「コンポーネント」は、ここにおいて使用されるように、一般的に、ソフトウェア、ハードウェア、または、これらの組み合わせを表している。ソフトウェアの実行の場合には、モジュールまたはコンポーネントは、プロセッサ(例えば、CPU)上で実行されると、特定のタスクを実行するプログラムコードを表している。プログラムコードは、一つまたはそれ以上のコンピューターで読み取り可能なメモリーデバイスに保管され得る。
図5にさらなる説明がされている。ここにおいて説明されたオペレーティグシステムコンフィグレーション値を保護する技術の特徴は、プラットフォームに依存することはない。つまり、本技術は、種々のプロセッサを有する種々の市販されているコンピューティングプラットフォーム上で実行される得ることを意味している。
【0074】
技術的事項が構造的特徴及び/又は方法論的アクトに特有の言葉で説明されてきたが、添付の特許請求の範囲において定められる技術的事項は、上述された特定の特徴またはアクトに必ずしも限定される必要はないことが理解されるべきである。むしろ、上述の特定の特徴およびアクトは、請求項に係る発明の実施例として開示されたものである。