(57)【特許請求の範囲】
【請求項１】
コンピュータによって実行される方法であって、
デバイス上でオペレーティグシステムを実行する以前のプリオペレーティグシステム環境において、一つまたはそれ以上のオペレーティグシステムに対するコンフィグレーション設定を特定するポリシーを獲得する段階と；
前記プリオペレーティグシステム環境において、前記ポリシーを前記オペレーティグシステムによって使用されるコンフィグレーション値と比較する段階と；
前記プリオペレーティグシステム環境において、前記コンフィグレーション値が前記ポリシーを満足する場合に、前記オペレーティグシステムが前記コンフィグレーション値を使ってブートすることを許可する段階と；
前記プリオペレーティグシステム環境において、前記コンフィグレーション値が前記ポリシーを満足しない場合に、対応するアクションをとる段階と、
を含み、
前記方法は、さらに
前記ポリシーの新たなバージョンが、信頼されたエンティティであるポリシー発行者からのものであり、かつ、前記ポリシーの新たなバージョンが、前記ポリシーのより新しいバージョンであると判断された場合に限って、前記ポリシーを、前記ポリシーの前記新たなバージョンと置き換えることを許可する段階と、
前記ポリシーの識別子が、前記ポリシーの前記新たなバージョンの親リストの中に含まれている場合に、前記ポリシーの前記新たなバージョンが、前記ポリシーのより新しいバージョンであると判断する段階と、
を含む、方法。
【請求項２】
前記ポリシーは、さらに
前記オペレーティグシステムがブートするのを許可されるために、前記プリオペレーティグシステム環境が満足すべきコンフィグレーション設定を特定している、
請求項１に記載の方法。
【請求項３】
前記方法は、さらに
前記プリオペレーティグシステム環境において、前記ポリシーのコンフィグレーション設定のための値を獲得する段階と；
前記獲得された値を、前記ポリシーの一部として保管する段階と；
前記獲得された値を、前記デバイスの次回のブートのために、前記ポリシーに係る前記ポリシーの設定の一部として使用する段階と、
を含む請求項１に記載の方法。
【請求項４】
前記プリオペレーティグシステム環境は、コンピューティングデバイス上で実行されている仮想マシンのプリオペレーティグシステム環境である、
請求項１に記載の方法。
【請求項５】
前記ポリシーは、安全な方法で維持され、
前記安全な方法においては、前記プリオペレーティグシステム環境のコンポーネントが前記ポリシーを変更できるが、前記オペレーティグシステムは前記ポリシーを変更できない、
請求項１に記載の方法。
【請求項６】
前記ポリシーは、さらに
前記対応するアクションを特定する、
請求項１に記載の方法。
【請求項７】
コンピューティングデバイスであって：
一つまたはそれ以上のプロセッサと；
複数のインストラクションを保管してある一つまたはそれ以上のコンピューターで読み取り可能な媒体と、を含み、
前記一つまたはそれ以上のプロセッサによって実行された場合に、前記一つまたはそれ以上のプロセッサに、前記コンピューティングデバイスがアクトを実行するプリオペレーティグシステム環境を実施させ、
前記アクトは：
オペレーティグシステムが前記コンピューティングデバイス上で実行されるために、前記オペレーティグシステムのコンフィグレーション値によって満足されるべきコンフィグレーション値を特定する変更を受取る段階であって、前記オペレーティグシステムはポリシーを変更できない段階と；
前記コンピューティングデバイスにおいて、前記ポリシーに対する前記変更が、前記プリオペレーティグシステム環境により信頼されたエンティティによって許可されたものかどうかをチェックする段階と；
前記ポリシーに対する前記変更が、前記プリオペレーティグシステム環境により信頼されたエンティティによって許可されたものである場合に限り、前記ポリシーを変更する段階と、を含み、さらに、
前記ポリシーの新たなバージョンが、信頼されたエンティティであるポリシー発行者からのものであり、かつ、前記ポリシーの新たなバージョンが、前記ポリシーのより新しいバージョンであると判断された場合に限って、前記ポリシーを、前記ポリシーの前記新たなバージョンと置き換えることを許可する段階と、
前記ポリシーの識別子が、前記ポリシーの前記新たなバージョンの親リストの中に含まれている場合に、前記ポリシーの前記新たなバージョンが、前記ポリシーのより新しいバージョンであると判断する段階と、を含む、
ことを特徴とするコンピューティングデバイス。
【請求項８】
前記ポリシーは、前記オペレーティグシステムに対してアクセスできない安全な方法で維持される、
請求項７に記載のコンピューティングデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
ここにおいて、オペレーティングシステムのコンフィグレーション値の保護に関して検討される。
【背景技術】
【０００２】
コンピューターは、インターネットといった、種々のネットワークを介して、ますます相互に接続されてきている。こうした接続性によって、ユーザーは種々の異なるサービスおよびデータにアクセスすることができるが、一方で、こうした接続性には問題が付き物である。こうした問題の一つは、そうした接続性によって、それらのコンピューター上で悪意あるプログラムが実行され得ることである。これらの悪意あるプログラムは、種々の望ましくない行為を実行することができる。他のコンピューターに対して攻撃を仕掛ける、他のユーザーのコンピューターに個人的なデータを送付する、ユーザーが彼または彼女のコンピューターを使えないようにする、などといった行為である。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
こうした悪意あるプログラムからコンピューターを保護することは難しいままである。
【課題を解決するための手段】
【０００４】
本概要は、以降の詳細な説明でより詳しく記述される本発明の概念について、簡素化された形式において代表的な概念の選択を紹介するものである。本概要は、特許請求された技術的事項の主要な特徴または本質的な特徴を特定することを意図するものではない。また、特許請求された技術的事項の範囲を限定するために使用されることを意図するものではない。
【０００５】
本発明の一つまたはそれ以上の実施態様に従えば、オペレーティグシステムをロードして実行する以前の、デバイス上のプリオペレーティグシステム環境において、少なくとも一つのオペレーティグシステムのためのコンフィグレーション設定を特定するポリシーが得られる。オペレーティグシステムは、このポリシーを変更することができない。このポリシーは、オペレーティグシステムによって使用されるコンフィグレーション値と比較され、そのコンフィグレーション値がポリシーを満足する場合に、オペレーティグシステムは、そのコンフィグレーション値を使用してブート（ｂｏｏｔ）することができる。しかしながら、コンフィグレーション値がポリシーを満足しない場合には、対応するアクションがとられる。
【０００６】
本発明の一つまたはそれ以上の実施態様に従えば、オペレーティグシステムがデバイス上で実行されるためのオペレーティグシステムに係るコンフィグレーション値によって満足されるべきコンフィグレーション設定を特定する、ポリシーに対する変更が受取られる。オペレーティグシステム自身は、このポリシーを変更することができない。ポリシーに対する変更が、プリオペレーティグシステム環境から信頼されたエンティティによって許可されているかどうかについてチェックが行われ、ポリシーに対する変更がプリオペレーティグシステム環境によって許可されている場合にのみポリシーが変更される。
【図面の簡単な説明】
【０００７】
全ての図面を通じて同一の番号は、類似の特徴を参照するために使用される。
【図１】図１は、本発明の一つまたはそれ以上の実施例に従って、オペレーティグシステムのコンフィグレーション値の保護を実行するデバイスを示している。
【図２】図２は、本発明の一つまたはそれ以上の実施例に従って、ポリシーを示している。
【図３】図３は、本発明の一つまたはそれ以上の実施例に従って、オペレーティグシステムのコンフィグレーション値の保護を実行するプロセスを説明するフローチャートである。
【図４】図４は、本発明の一つまたはそれ以上の実施例に従って、デバイスにおいてポリシーの変更をするプロセスを説明するフローチャートである。
【図５】図５は、本発明の一つまたはそれ以上の実施例に従って、オペレーティグシステムのコンフィグレーション値の保護を実行するように構成されたコンピューティングデバイスを示している。
【発明を実施するための形態】
【０００８】
ここにおいて、オペレーティングシステムのコンフィグレーション値の保護に関して検討される。デバイスのブートプロセスの最中には、デバイスに係る一つまたはそれ以上のオペレーティグシステムの少なくとも一部分によって使用されている一式のコンフィグレーション値、および、任意的に含まれるそのデバイスのプリオペレーティグシステム環境のコンポーネントによって使用される一つまたはそれ以上のコンフィグレーション値が、デバイスのポリシーに対してチェックされる。コンフィグレーション値がポリシーを満足する場合には、オペレーティグシステムがデバイス上で実行することが許可される、しかし、コンフィグレーション値がポリシーを満足しない場合には、一つまたはそれ以上の好適なアクションがとられる（例えば、オペレーティグシステムを実行しない、値を変更する、など）。ポリシーは、オペレーティグシステムおよびコンピューターデバイス上で実行されている他のアプリケーションによる不正な変更から保護する方法で、保管されている。しかしながら、一人以上のポリシー発行者は、ポリシーを更新することができ、経時的にポリシーの変更を許可する。
【０００９】
ここにおいて、対称鍵暗号法（ｓｙｍｍｅｔｒｉｃ  ｋｅｙ  ｃｒｙｐｔｏｇｒａｐｈｙ）、公開鍵暗号法、そして、公開／秘密鍵ペア、が参照される。こうした鍵暗号法は当業者にとって周知であるが、ここでは、読者の手助けのために、こうした鍵暗号法の簡潔な概要が含まれている。公開鍵暗号法では、エンティティ（ユーザー、ハードウェアまたはソフトウェアコンポーネント、デバイス、ドメイン、といったもの）は、公開／秘密鍵ペアと関連付けられている。公開鍵は、公に利用可能にすることができるが、エンティティは、秘密鍵を秘密に保持している。秘密鍵がなければ、公開鍵を使用して暗号化されたデータを復号することは計算的に非常に難しい。よって、データは、公開鍵を持ったあらゆるエンティティによって暗号化することができるが、対応する秘密鍵を持ったエンティティによってのみ復号化することができる。加えて、データと秘密鍵を使用することによって、デジタル署名を生成することができる。秘密鍵がなければ、公開鍵を使用して検証することができる署名を生成することは計算的に非常に難しい。公開鍵を持ったあらゆるエンティティは、公開鍵、署名、および署名されたデータについての好適なデジタル署名検証アルゴリズムを実行することによって、そのデジタル署名を検証するために公開鍵を使用することができる。
【００１０】
一方、対称鍵暗号法では、共有鍵（対称鍵としても言及される）が、２つのエンティティによって知られており、秘密に保持されている。共有鍵を持つあらゆるエンティティは、典型的には、その共有鍵で暗号化されたデータを復号することができる。共有鍵がなければ、その共有鍵で暗号化されたデータを復号することは計算的に非常に難しい。よって、２つのエンティティの両方が共有鍵を知っている場合は、それぞれがデータを暗号化し、他方が復号することができるが、他のエンティティが共有鍵を知らない場合には、他のエンティティはデータを復号することができない。同様に、共有鍵を持つエンティティは、データを暗号化し、同一のエンティティが復号できるが、他のエンティティがその共有鍵を知らない場合は、他のエンティティはデータを復号できない。加えて、鍵付きハッシュ（ｋｅｙｅｄ−ｈａｓｈ）メッセージ認証コードメカニズムといったものを使用して、対称鍵暗号法に基づいてデジタル署名を生成することができる。共有鍵を持つあらゆるエンティティは、デジタル署名を生成し、検証することができる。例えば、信頼された第三者は、特定のエンティティに係るアイデンティティ（ｉｄｅｎｔｉｔｙ）に基づいて対称鍵を生成することができ、その特定のエンティティのための署名の生成および検証の両方ができる（例えば、対称鍵を使用してデータを暗号化、または復号することによる）。
【００１１】
図１は、本発明の一つまたはそれ以上の実施例に従って、オペレーティグシステムのコンフィグレーション値の保護を実行するデバイス１００を示している。デバイス１００は、ファームウェア１０２、オペレーティグシステムローダー（ｌｏａｄｅｒ）１０４、および、オペレーティグシステムカーネル（ｋｅｒｎｅｌ）１０６を含み、それぞれが、デバイス１００が種々のオペレーションを実行できるようにする一つまたはそれ以上のコンポーネントまたはモジュールである。これらのコンポーネントまたはモジュールは、不揮発性メモリーまたはストレージデバイス（例えば、フラッシュメモリー、読出し専用メモリー（ＲＯＭ）、磁気ディスク、光ディスク、ネットワークでアクセスされる離れたデバイスまたはストレージ、といったもの）の中に典型的に保管されるインストラクション及び／又はデータを含んでいる。これらのコンポーネントまたはモジュールは、不揮発性メモリーまたはストレージデバイスから一つまたはそれ以上の揮発性メモリー（例えば、ランダムアクセスメモリー（ＲＡＭ））の中にロードされ、一つまたはそれ以上のプロセッサによって引き出され、実行される。
【００１２】
デバイス１００が、電源オン、または、さもなければリセットされる場合に、デバイス１００はブートする。デバイス１００のブートは、デバイス１００の開始オペレーションを参照し、典型的には、デバイス１００に係るオペレーティグシステムをロードし、実行する。デバイス１００のブートは、典型的に、少なくとも２つのステージを含んでいる。第１のステージでは、プリオペレーティグシステム環境のコンポーネントが、デバイス１００上にロードされ、実行される。プリオペレーティグシステム環境においては、種々のコンポーネントまたはモジュールが、オペレーティグシステムのブートを含む様々なオペレーションを実行している。第２のステージでは、オペレーティグシステム環境が、デバイス１００上にロードされ、実行される。オペレーティグシステム環境では、デバイス１００上でオペレーティグシステムが実行されている。
【００１３】
コンポーネントのロードは、コンポーネントを揮発性（または、代替的には非揮発性）メモリーにコピーすること、および、任意的に、他のコンポーネントまたは保管データに対する追加のコンフィグレーションを実行することを参照する。コンポーネントの実行は、デバイス１００にプロセッサまたはコントローラーによるコンポーネントのインストラクションの実行（実施）を参照する。デバイス１００がブートされた後は、オペレーティグシステムによって、デバイス１００上で、種々の他のプログラムが実行され得る。
【００１４】
デバイス１００は、種々の異なるタイプの物理的デバイスであってよい。例えば、デバイス１００は、デスクトップコンピューター、ラップトップまたはノートブックコンピューター、ノートパッドまたはタブレットコンピューター、モバイルステーション、エンターテイメント装置、ディスプレイ装置と通信可能に接続されたセットトップボックス、テレビ、携帯電話または無線電話、ゲームコンソール、自動車用コンピューター、といったようなものである。デバイス１００は、また、物理的デバイス上で実行される仮想マシンといった、仮想デバイスであってもよい。仮想マシンは、あらゆる種々の異なるタイプの物理的デバイス上で実行され得る。
【００１５】
ブートプロセスの最中、ファームウェア１０２は、デバイス１００によってロードされ、実行される。ファームウェア１０２は、デバイス１００の不揮発性メモリーの中に保管される。ファームウェア１０２は、読出し専用メモリーの中に、または、代替的に、書き換え可能な不揮発性メモリー（フラッシュメモリーといったもの）の中に保管されてよい。ファームウェア１０２が、書き換え可能な不揮発性メモリーに保管される実施例においては、典型的に、そうしたファームウェア１０２が改ざんされていないこと（そして、悪意あるプログラムによって警告されていないこと）を保証するように手当てされる。こうした手当ては、例えば、書き換え可能な不揮発性メモリーに保管されたファームウェア１０２の署名を検証すること、ファームウェア１０２だけがアクセス可能な保護されたメモリーの中にファームウェア１０２を保管すること、従来の信頼されたブートまたは安全なブート技術を使用すること、といったようなものでされてよい。
【００１６】
ファームウェア１０２は、オペレーティグシステムローダー１０４の実行を開始する。オペレーティグシステムローダー１０４は、典型的に、実行される前に、ファームウェア１０２によってロードされ、検証される。オペレーティグシステムローダー１０４は、異なる方法で検証され得る。オペレーティグシステムローダー１０４のデジタル署名（ファームウェア１０２が信頼するように構成された（例えば、プログラムされた）エンティティによって生成されたもの）を検証するといったことによるものである。
【００１７】
オペレーティグシステムローダー１０４は、オペレーティグシステムカーネル１０６をロードし、実行する。オペレーティグシステムカーネル１０６は、典型的には、実行される前に、オペレーティグシステムローダー１０４によってロードされ、検証される。オペレーティグシステムカーネル１０６は、異なる方法で検証され得る。オペレーティグシステムカーネル１０６のデジタル署名（オペレーティグシステムローダー１０４が信頼するように構成された（例えば、プログラムされた）エンティティによって生成されたもの）を検証するといったことによるものである。オペレーティグシステムカーネル１０６は、次に、種々の異なるオペレーティグシステムのコンポーネント及び／又はユーザーモードのコンポーネントをロードし、実行する。これらのオペレーティグシステムのコンポーネントおよびユーザーモードのコンポーネントは、そうしたコンポーネントを実行させるユーザーのリクエストに応じて、もしくは、別のコンポーネントまたはモジュールからのリクエストに応じて実行され得る。
【００１８】
オペレーティグシステムカーネル１０６は、種々のオペレーティグシステムコンフィグレーション値１１２に従って、獲得し、動作する。オペレーティグシステムコンフィグレーション値１１２は、オペレーティグシステムカーネル１０６によってアクセスされるように図示されているが、また、オペレーティグシステムローダー１０６、及び／又は、デバイス１００の他のコンポーネントまたはモジュールによってもアクセスされ得る。オペレーティグシステムコンフィグレーション値１１２は、あらゆる種々の異なる情報であってよい。情報は、オペレーティグシステムカーネル１０６（及び／又はオペレーティグシステムローダー１０４）がどのように動作するか、オペレーティグシステムカーネル１０６（及び／又はオペレーティグシステムローダー１０４）の何のコンポーネントがロードされ、実行されるか、それらの組み合わせ、等といったものである。例えば、オペレーティグシステムコンフィグレーション値１１２は、オペレーティグシステムカーネル１０６（及び／又はオペレーティグシステムローダー１０４）が、信頼できないプログラムまたはコンポーネントがデバイス１００上で実行されるのを許可するかどうか、または、オペレーティグシステムカーネル１０６（及び／又はオペレーティグシステムローダー１０４）が、デバイス１００上で実行される前にプログラムまたはコンポーネントを認証するかどうか、についての指標であってよい。別の実施例として、オペレーティグシステムコンフィグレーション値１１２は、反マルウェア（ａｎｔｉ−ｍａｌｗａｒｅ）アプリケーション（または特定の反マルウェアアプリケーション）がデバイス１００上で実行されるのを許可するかどうかの指標であってよい。他の実施例として、オペレーティグシステムコンフィグレーション値１１２は、デバイス１００上で実行される仮想マシンを管理する仮想マシンマネージャーのために使用される値または設定のコンフィグレーションの指標であってよい。さらなる別の実施例として、オペレーティグシステムコンフィグレーション値１１２は、使用されるべき特定のプロセッサまたはプロセッサコアの指標であってよい（例えば、実行不能としてマークされるべきメモリーの領域）。
【００１９】
一つまたはそれ以上の実施例において、ファームウェア１０２とオペレーティグシステムローダー１０４は、実行前環境（ブート前環境またはプリオペレーティグシステム環境としても参照される）の一部として実行される。実行前環境は、オペレーティグシステムがブートを完了し、実行される以前に、デバイス１００上で実行されている環境を指す。こうした実施例において、ファームウェア１０２とオペレーティグシステムローダー１０４は、デバイス１００のネットワークインターフェイスカードといった、デバイス１００のコンポーネント上（例えば、読出し専用メモリー（ＲＯＭ）またはフラッシュメモリー）に保管され得る。代替的に、ファームウェア１０２とオペレーティグシステムローダー１０４は、実行前環境の最中に他のデバイスまたはサービスから獲得されてもよい。例えば、ファームウェア１０２とオペレーティグシステムローダー１０４は、別のデバイスまたはサービスからデバイス１００に対して提供されるブートイメージの一部として含まれてよい。
【００２０】
実行前環境は、種々の異なる方法で実行され、異なる従来技術に基づいてもよい。例えば、実行前環境は、ブート前実行環境（Ｐｒｅｂｏｏｔ  ｅＸｅｃｕｔｉｏｎ  Ｅｎｖｉｒｏｎｍｅｎｔ（ＰＸＥ））規格バージョン２．０または他のバージョンに従って実行されてもよい。別の実施例として、実行前環境は、ユニファイドエクステンシブルファームウェアインターフェイス（Ｕｎｉｆｉｅｄ  Ｅｘｔｅｎｓｉｂｌｅ  Ｆｉｒｍｗａｒｅ  Ｉｎｔｅｒｆａｃｅ（ＵＥＦＩ））規格バージョン２．３または他のバージョンに従って実行されてもよい。さらなる他の実施例として、実行前環境は、種々の異なるパーソナルコンピューターベーシック入出力システム（ｂａｓｉｃ  ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｓｙｓｔｅｍ（ＢＩＯＳ））のバージョンを使用して実行されてもよい。
【００２１】
ブートプロセスの最中に、オペレーティグシステムローダー１０４は、ポリシー記録１１４を獲得する。ポリシー記録は、デバイス１００が従うべき一つまたはそれ以上のポリシーの記録である。このポリシーの記録は、オペレーティグシステムコンフィグレーション値１１２が満足すべきコンフィグレーション設定または値を含んでいる。オペレーティグシステムローダー１０４は、ポリシー記録１１４における一つまたはそれ以上のポリシーをオペレーティグシステムコンフィグレーション値１１２と比較し、オペレーティグシステムコンフィグレーション値１１２がポリシー記録における一つまたはそれ以上のポリシーを満足している場合に、オペレーティグシステムカーネル１０６のコンポーネントの実行を開始する。しかしながら、一つまたはそれ以上のオペレーティグシステムコンフィグレーション値１１２がポリシー記録１１４におけるポリシーを満足しない場合には、好適な対応するアクションがとられる。オペレーティグシステムカーネル１０６をロードしない、オペレーティグシステムコンフィグレーション値１１２を変更する、などといった、種々の異なる対応するアクションがとられてよい。これらの対応するアクションは、以下に詳しく説明される。オペレーティグシステムローダー１１４は、こうして、オペレーティグシステムコンフィグレーション値１１２を保護し、悪意あるプログラムによってオペレーティグシステムコンフィグレーション値１１２が変更されてしまったかもしれない状況を特定している。
【００２２】
一つまたはそれ以上の実施例において、ポリシー記録１１４における一つまたはそれ以上のポリシーは、また、デバイスのプリオペレーティグシステム環境の一つまたはそれ以上のコンポーネントが満足すべきコンフィグレーション設定または値を含んでいる。プリオペレーティグシステム環境によって満足されるべきこれらのコンフィグレーション設定は、プリオペレーティグシステム環境がどのように動作するか、プリオペレーティグシステム環境の何のコンポーネントがロードされ、実行されるか、それらの組み合わせ、等といった、あらゆる種々の異なる指標であってよい。これらのコンフィグレーション設定は、オペレーティグシステムコンフィグレーション値１１２の一部として含まれてよく、また、代替的には、他の設定またはちであってよい。例えば、これらのコンフィグレーション設定または値は、特定のオペレーティグシステムだけがロードされ、実行され得ることを規定することができる。
【００２３】
図１には、単一のオペレーティグシステムカーネル１０６が示されているが、代替的には、デバイス１００上で複数のオペレーティグシステムカーネル１０６がロードされ、実行されてよいことに留意すべきである。これらの異なるそれぞれのオペレーティグシステムカーネルは、それ自身のオペレーティグシステムコンフィグレーション値１１２とそれ自身のポリシー記録１１４（または、ポリシー記録１１４におけるそれ自身のポリシー）を有することができる。そして、オペレーティグシステムローダー１０４は、好適な一つまたはそれ以上のポリシーを、ブートされているオペレーティグシステムカーネル１０６のための好適なオペレーティグシステムコンフィグレーション値と比較する。代替的に、２つまたはそれ以上のこれらの異なるオペレーティグシステムカーネルは、オペレーティグシステムコンフィグレーション値１１２及び／又はポリシー記録１１４（及び／又はポリシー記録１１４の中のポリシー）の少なくとも一部を共有することができる。
【００２４】
図２は、本発明の一つまたはそれ以上の実施例に従って、ポリシー２００を示している。ポリシー２００は、例えば、図１のポリシー記録１１４におけるポリシーとして含まれてもよい。ポリシー２００は、ポリシー識別子２０２、ポリシー親リスト２０４、および、一つまたはそれ以上のコンフィグレーション値及び／又は設定２０６、を含んでいる。ポリシー識別子２０２、ポリシー親リスト２０４、および、コンフィグレーション値及び／又は設定２０６、の一つまたはそれ以上をデジタルに署名することで、ポリシー２００に関するデジタル署名２０８も、また、生成される。
【００２５】
ポリシー識別子２０２は、ポリシー２００を特定し、異なるポリシーをお互いから区別することができるようにする。ポリシー識別子２００は、例えば、ポリシー２００に対して割り当てられたグローバルユニークＩＤ（ＧＵＩＤ）であってよい。ポリシー親リスト２０４は、ポリシー２００が置き換えるゼロ個以上の他のポリシーのリストである。ポリシー親リストは、以下に詳細に説明するように、所定のタイプの攻撃の防御を促進する。
【００２６】
コンフィグレーション値及び／又は設定２０６は、オペレーティグシステムコンフィグレーション値（例えば、図１の値１１２）が満足すべき値を含んでいる。ンフィグレーション値及び／又は設定２０６は、また、ポリシー２００における一つまたはそれ以上のコンフィグレーション値が、オペレーティグシステムコンフィグレーション値によって満足されない場合にとられる対応するアクションを含んでいる。一つまたはそれ以上のコンフィグレーション値及び／又は設定２０６は、以下に詳細に説明するように、任意的に、オペレーティグシステムローダーコンポーネントによって設定されてもよい。
【００２７】
コンフィグレーション値及び／又は設定２０６は、また、一つまたはそれ以上の他のポリシーの識別子への参照を含んでいる。これらの一つまたはそれ以上の他のポリシーのコンフィグレーション値及び／又は設定は、ポリシー２００の一部として含まれている。従って、ポリシー２００は、一つまたはそれ以上の他のポリシーを有効に包含または含んでいる。コンフィグレーション値及び／又は設定２０６は、また、一人またはそれ以上のポリシー発行者の識別子を含んでもよい。従って、ポリシー記録（例えば、図１のポリシー記録）にポリシーを追加することが許されている新たなポリシー発行者を、ポリシー２００において特定することができる。
【００２８】
図１に戻ると、オペレーティグシステムローダー１０４は、オペレーティグシステムコンフィグレーション値１１２が、ポリシー記録１１４における一つまたはそれ以上のポリシーを満足するかどうかをチェックする。ポリシー記録１１４は、単一のポリシーを含んでよく、以下により詳細に説明するように、一人またはそれ以上の異なるポリシー発行者によって変更され得る。代替的に、ポリシー記録１１４は、複数のポリシーを含むことができ、それぞれが一人またはそれ以上のポリシー発行者によって変更され得る。従って、例えば、異なるポリシー発行者は、ポリシー記録１１４において包含される異なるポリシー（彼らが後に変更することができる）を提供することができる。
【００２９】
コンフィグレーション値は、種々の異なる方法において、ポリシーの中で特定され得る。一つまたはそれ以上の実施例において、ポリシーは、オペレーティグシステムコンフィグレーション値の名前（または他の識別子）を含む、ネームバリューペア（ｎａｍｅ−ｖａｌｕｅ  ｐａｉｒ）における値を特定し、ポリシーを満足するために有するべきそのオペレーティグシステムコンフィグレーション値の一つまたはそれ以上の値を特定する。他の実施例において、値は、順序、または、対応するオペレーティグシステムコンフィグレーション値に固有の他の構造、におけるポリシーの中に含まれている。
【００３０】
オペレーティグシステムコンフィグレーション値１１２が、ポリシー記録１１４における一つまたはそれ以上のポリシーを満足するかどうかの判断は、異なる方法で実行され得る。一つまたはそれ以上の実施例においては、オペレーティグシステムコンフィグレーション値がポリシーを満足するかどうかを判断するために数学的な演算子が使用される。等しい、より大きい、より小さい、などといった、種々の異なる数学的な演算子が使用されてよい。他の実施例においては、オペレーティグシステムコンフィグレーション値がポリシーを満足するかどうかを判断するために他の演算子または論理的な公式が使用される。オペレーティグシステムコンフィグレーション値がポリシーにおける一式の値のうちの一つとして含まれているか、といった判断である。
【００３１】
複数のポリシーがポリシー記録１１４の中に含まれている状況において、オペレーティグシステムコンフィグレーション値１１２がポリシー記録１１４におけるポリシーを満足するかどうかの判断は、オペレーティグシステムコンフィグレーション値１１２がポリシー記録１１４におけるそれぞれのポリシーを満足するかどうかを判断することである。従って、複数のポリシーは、オペレーティグシステムコンフィグレーション値１１２がポリシー記録１１４におけるポリシーを満足するかどうかを判断する目的のために、組合わされているものと見られてもよい。
【００３２】
オペレーティグシステムコンフィグレーション値１１２がポリシー記録１１４を満足する場合に、オペレーティグシステムローダー１０４は、オペレーティグシステムカーネル１０６の実行を開始するように進行する。しかしながら、一つまたはそれ以上のオペレーティグシステムコンフィグレーション値１１２がポリシー記録１１４を満足しない場合には、ポリシー記録１１４を満足していない一つまたはそれ以上のオペレーティグシステムコンフィグレーション値に応じて好適なアクションがとられる。異なるオペレーティグシステムコンフィグレーション値に対してそれぞれ異なるアクションがとられてもよいし、また、複数のオペレーティグシステムコンフィグレーション値に対して同一のアクションがとられてもよい。これらの対応するアクションは、デバイス１００上にそのオペレーティグシステムがロードされず、実行されないように、ブートプロセスを停止するアクションと同様に、デバイス１００上にそのオペレーティグシステムがロードされ、実行されるように、ブートプロセスを継続することを許可するアクション、を含んでよい。
【００３３】
一つまたはそれ以上の実施例において、とられるべき対応するアクションは、ポリシー記録１１４の中に含まれている。ポリシー記録１１４におけるそれぞれのポリシーは、そのポリシーの少なくとも一部分が満足されていない（例えば、特定のオペレーティグシステムコンフィグレーション値１２がポリシーを満足していない）場合に、とられるべき対応するアクションの指標（例えば、図２のコンフィグレーション値／設定の一部として）を含んでいる。他の実施例においては、対応するアクションが含まれており（例えば、コンフィグレーション値としてプログラムされ、または設定されている）、または、そうでなければ、オペレーティグシステムローダー１０４によって獲得される。
【００３４】
対応するアクションは、ブートプロセスを停止することであってよい。つまり、オペレーティグシステムローダー１０４は、オペレーティグシステムカーネル１０６の実行を開始しないので、オペレーティグシステムは、デバイス１００上にロードされず。実行されない。代替的に、対応するアクションは、ポリシーを満足しないオペレーティグシステムコンフィグレーション値１１２を無視して、代わりに別の値（例えば、ポリシーの中に含まれているもの）を使用してもよい。対応するアクションは、代替的に、オペレーティグシステムコンフィグレーション値１１２をポリシーからの値（または、そうでなければポリシーによって特定された値）で書き換え、ブートプロセスの継続を許してもよい。対応するアクションは、代替的に、オペレーティグシステムコンフィグレーション値１１２を使用し、ブートプロセスの継続を許可するが、イベントをレポートすることでもよい。オペレーティグシステムコンフィグレーション値１１２がポリシーを満足しないという通知を記録または（例えば、別のコンポーネント、デバイス、またはサ−ビスに対して）送付するといったものである（特定のオペレーティグシステムコンフィグレーション値及び／又はポリシーの表示が通知の中に含まれ得る）。
【００３５】
対応するアクションは、代替的に、デバイス１００のユーザーを促すことであってよい（例えば、ブートプロセスを進めるためにユーザーの許可を受取ること）。この働きかけは、例えば、ユーザーに現在のオペレーティグシステムコンフィグレーション値を許可するようにリクエストする促しであってよい。この働きかけは、また、ポリシーを満足するためにあるべきコンフィグレーション値の指示を含んでもよい。そして、ユーザーは、現在のオペレーティグシステムコンフィグレーション値を使用して進行することを許可する（または許可しない）ための種々の異なる入力を提供し得る。ボタンまたはキーを押す、スクリーンの所定の位置に触れる、音声入力を提供する、オペレーティグシステムローダー１０４によって信頼された（または検証され得る）セキュリティトークン（ｓｅｃｕｒｉｔｙ  ｔｏｋｅｎ）を提供する、などといったことである。オペレーティグシステムローダー１０４は、入力が、離れたデバイスよりむしろ、デバイス１００のユーザーから受取ったものであること（例えば、デバイス１００のキーボード、タッチスクリーン、マイクロフォン、等から受取ったもの）の検証を行う（例えば、ユーザー入力が、離れたデバイスから受取ったリクエストよりむしろ、キー押し又はマイクロフォンから受取ったユーの入力であることを検証する）。従って、そうした状況においては、ユーザーがデバイス１００のところに居て、ブートプロセスの継続を許可する場合に限って、ブートプロセスが継続され得る。つまり、悪意あるデバイスまたはデバイス１００の悪意あるコンポーネントは、ブートプロセスの継続を許可することができない。
【００３６】
ポリシー記録１１４は、オペレーティグシステムローダー１０４はポリシー記録１１４を変更することができるが、オペレーティグシステムローダー１０４の後に実行されるコンポーネント（他のオペレーティグシステムコンポーネント及び／又はユーザーモードコンポーネントと同様に特定のオペレーティグシステムカーネル１０６におけるもの）はポリシー記録１１４を変更することができないという、安全な方法で維持される。ポリシー記録１１４は、このセキュリティを反映するように破線で囲まれて示されている。ポリシー記録１１４は、種々の異なる方法において、この安全な方法で維持されてよい。
【００３７】
一つまたはそれ以上の実施例において、ポリシー記録１１４は、不揮発性ランダムアクセスメモリー（ＮＶＲＡＭ）といった、書込み可能な不揮発性メモリーの中に保管されてよい。書込み可能なＮＶＲＡＭは、特定の条件下及び／又は特定の時間においてしかアクセスできない。一つまたはそれ以上の実施例において、書込み可能なＮＶＲＡＭは、トラステッドプラットフォームモジュール（Ｔｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｍｏｄｕｌｅ：ＴＰＭ）を介してアクセスされる。ＴＰＭに関する追加の情報は、オレゴン州ビーバートンの、トラステッドコンピューティンググループから利用可能である。ＴＰＭは、所定の時点まで、または、所定のイベントが発生するまで、書込み可能なＮＶＲＡＭの読出しと書込みを許可し、その後、ＴＰＭは、その書込み可能なＮＶＲＡＭの読出しを許可し、書込みを不許可にする。この所定の時点、または、所定のイベント発生は、例えば、書込み可能なＮＶＲＡＭをクローズまたはロックするためのコンポーネントからのリクエストであり得る。従って、オペレーティグシステムローダー１０４は、書込み可能なＮＶＲＡＭの中のポリシー記録１１４に対して変更を行うことができ、次に、書込み可能なＮＶＲＡＭをロックさせることができる。オペレーティグシステムローダー１１４は、このようにして、書込み可能なＮＶＲＡＭがロックされているので、悪意あるプログラムがポリシー記録１１４を改ざんすることを防ぐことができる。次回にデバイス１００がブートされるとき、書込み可能なＮＶＲＡＭはロック解除されるが、オペレーティグシステムローダー１０４は、悪意あるプログラムが実行されて書込み可能ＮＶＲＡＭに書き込む前に、再び書込み可能なＮＶＲＡＭをロックする。同様に、他のタイプの記録媒体（例えば、磁気ディスクドライブ）が、特定の条件下及び／又は特定の時点でのみアクセスされるように、実施されてもよい。
【００３８】
代替的に、ポリシー記録１１４は、他の技術を使用した安全な方法で維持されてもよい。変更が信頼できるエンティティによって署名されている場合にのみポリシー記録１１４の変更を許可する保護されたインターフェイス（例えば、アプリケーションプログラミングインターフェイス（ＡＰＩ））を通じてだけアクセス可能なポリシー記録１１４による、といったものである。そうした信頼できるエンティティとは、オペレーティグシステムローダー１０４によって信頼されたエンティティである（例えば、オペレーティグシステムローダー１０４によって信頼に値するものとして知られ、かつ、オペレーティグシステムローダー１０４が公開鍵を有しているエンティティ）。例えば、ポリシー記録１１４は、ＵＥＦＩ署名済みの値として保管され得るもので、変更が信頼されたエンティティによって署名されている場合にのみ変更することができる。ポリシー記録に対してリクエストされたあらゆる変更は、信頼されたエンティティによって署名されたものであるとして検証され、信頼されたエンティティによる署名である場合に、そうした変更がなされるが、信頼されたエンティティによる署名ではない場合には、変更されない。
【００３９】
別の実施例として、デバイス１００が仮想マシンとして実施されている状況において、ポリシー記録１１４は、デバイス上の一つまたはそれ以上の仮想マシンのオペレーティグシステムを管理する仮想マシンマネージャーによって、安全な方法で維持されてもよい。仮想マシンマネージャーは、オペレーティグシステムローダー１０４が、しかしながら他のコンポーネントではなく、ポリシー記録１１４においてポリシーを変更することを許可する。
【００４０】
ポリシー記録１１４に対する変更は、ポリシー記録１１４にポリシーを追加すること、ポリシー記録１１４からポリシーを除去すること、及び／又は、ポリシー記録１１４におけるポリシーを新たなポリシーと置き換えること、を含む。一つまたはそれ以上の実施例において、ポリシー記録１１４に対する変更は、そうした変更が信頼されたポリシー発行者から受取ったものである場合に、オペレーティグシステムローダー１０４によって実行される（例えば、変更は、オペレーティグシステムローダー１０４により信頼されたポリシー発行者によってデジタル署名される）。ポリシー記録１１４におけるポリシーを変更するリクエストは、異なる方法で、オペレーティグシステムローダー１１４に対して提供されてよい。一つまたはそれ以上の実施例において、オペレーティグシステムカーネル１０６またはデバイス１００上で実行されている別のコンポーネントは、ポリシーに対する変更を、デバイス１００の次回のブートにおいてオペレーティグシステムローダー１０４にアクセス可能な存続する場所に保管する。デバイス１００の次回のブートでは、適切である場合には、オペレーティグシステムローダー１０４は、変更を獲得し、変更を実行する。オペレーティグシステムカーネル１０６またはデバイス１００上で実行されている他のコンポーネントは、また、変更に伴なう特定のタイプの変更に対するリクエストを保管することができる（例えば、特定のポリシーが除去され、または、別のポリシーを置き換えるという指示）。代替的に、特定のタイプの変更に対するリクエストは固有のものであってよい（例えば、存続する場所における保管されたポリシーの存在は、オペレーティグシステムローダー１０４によって、そのポリシーをポリシー記録１１４に追加するリクエストであると考えられる）。
【００４１】
オペレーティグシステムローダー１１４は、（ポリシー発行者からの）ポリシーを除去するリクエストに応じて、ポリシー記録１１４からポリシーを取り除いてもよい。オペレーティグシステムローダー１０４は、リクエストが、信頼されたエンティティであるポリシー発行者からのものであることを検証し、リクエストが信頼されたエンティティであるポリシー発行者からのものである場合にポリシーを除去し、リクエストが信頼されたエンティティであるポリシー発行者からのものではない場合にはポリシーを除去しない。
【００４２】
同様に、オペレーティグシステムローダー１１４は、（ポリシー発行者からの）ポリシーを追加するリクエストに応じて、ポリシー記録１１４からポリシーを追加してもよい。オペレーティグシステムローダー１０４は、新たなポリシー（および任意的にリクエスト）が、信頼されたエンティティであるポリシー発行者からのものであることを検証し、新たなポリシー（および任意的にリクエスト）が信頼されたエンティティであるポリシー発行者からのものである場合にポリシーを追加し、新たなポリシー（及び／又は任意的にリクエスト）が信頼されたエンティティであるポリシー発行者からのものではない場合にはポリシーを追加しない。
【００４３】
加えて、オペレーティグシステムローダー１０４は、ポリシー記録１１４におけるポリシー（ポリシーの現在のバージョンとしても参照される）を、新たなポリシー（ポリシーの新たなバージョンとしても参照される）に置き換えることができる。新たなポリシーを受取った場合は、オペレーティグシステムローダー１０４は、新たなポリシー（および任意的にリクエスト）が信頼されたエンティティであるポリシー発行者からのものであることを検証する。新たなポリシー（及び／又は任意的にリクエスト）が信頼されたエンティティあるポリシー発行者からのものでない場合は、オペレーティグシステムローダー１１４は、現在のポリシーのバージョンを新たなポリシーのバージョンと置き換えない。
【００４４】
しかしながら、新たなポリシー（および任意的にリクエスト）が信頼されたエンティティであるポリシー発行者からのものである場合は、オペレーティグシステムローダー１１４は、新たなバージョンのポリシーが、本当にポリシーの現在のバージョンの、より新しいバージョンであるかどうかをチェックする。オペレーティグシステムローダー１０４は、現在のポリシーのバージョンが、ポリシーの新たなバージョンに係る親リストの中に含まれているかどうかをチェックすることによって、ポリシーのその新たなバージョンが、本当にポリシーの現在のバージョンよりも新たなバージョンであるかどうかをチェックする。ポリシーの新たなバージョンは、新たなポリシーのバージョンに置き換えられた、同一のポリシー発行者によって発行されたゼロまたはそれ以上の以前のポリシーを特定するポリシー親リストを含んでいる。ポリシー親リストは、ポリシー識別子（例えば、ＧＵＩＤ）によって以前のポリシーを特定することができる。ポリシーの新たなバージョンが信頼されたエンティティであるポリシー発行者からのものであり、ポリシーの現在のバージョンが、ポリシーの新たなバージョンに係るポリシー親リストの中に含まれる場合には、オペレーティグシステムローダー１０４は、ポリシーの現在のバージョンを、ポリシーの新たなバージョンに置き換える。そうでなければ、オペレーティグシステムローダー１０４は、ポリシーの現在のバージョンを、ポリシーの新たなバージョンに置き換えない。
【００４５】
ポリシー親リストの使用は、悪意あるプログラムまたはユーザーによるロールバック（ｒｏｌｌｂａｃｋ）またはリプレイアタック（ｒｅｐｌｙ  ａｔｔａｃｋ）に対する保護を促進するものであることに留意すべきである。例えば、悪意あるプログラムまたはユーザーは、ポリシーの現在のバージョン（例えば、新たなセキュリティ関連の値または設定を含む）をポリシーのより古いバージョンと置き換えようとするかもしれない（例えば、古いバージョンは、悪意あるプログラムまたはユーザーがデバイス１００のコンポーネントに対する不適当なアクセスを得ることを許してしまう期限の切れたセキュリティ関連の値または設定を含んでいる）。ポリシーの現在のバージョンが、ポリシーの新たなバージョンに係るポリシー親リストの中に含まれている場合に限って、ポリシーの現在のバージョンを新たなポリシーと置き換えることによって、オペレーティグシステムローダー１０４は、ポリシーの現在のバージョンが、ポリシーのより古いバージョンによって置き換えられないことを保証する。ポリシーのより古いバージョンが、信頼されたエンティティであるポリシー発行者によって利用可能となったとしても、ポリシーのより古いバージョンは、ポリシーの現在のバージョンを含む親リストを有さない、従って、オペレーティグシステムローダー１０４は、ポリシーの現在のバージョンをポリシーのより古いバージョンに置き換えることはない。
【００４６】
加えて、一つまたはそれ以上の実施例において、ポリシー記録１１４への変更は、デバイス１００のユーザーまたは他の信頼されたエンティティといった、プリオペレーティグシステム環境（例えば、オペレーティグシステムローダー１０４及び／又はファームウェア１０２によって信頼されたもの）によって信頼されたエンティティによって許可された場合にのみ、オペレーティグシステムローダー１１４により実行される。エンティティがデバイス１００のユーザーである場合、オペレーティグシステムローダー１０４は、デバイス１００のユーザーが変更を許可するように促す。デバイス１００の（または接続された）スクリーン上に視覚的なプロンプト（ｐｒｏｍｐｔ）を表示したり、デバイス１００の（または接続された）スピーカーで音響的なプロンプトを再生したり、といったようなことを行う。ユーザーはポリシーに対する変更を、ボタンまたはキーを押す、スクリーンの所定の場所を触る、音声入力する、などといった、種々の異なる入力を提供することによって許可することができる。オペレーティグシステムローダー１０４は、その入力がデバイス１００のユーザーから受取ったものであり（例えば、デバイス１００のキーボード、タッチスクリーン、マイクロフォン、等から受取ったこと）、離れたデバイスから受取ったものではないことを検証する（例えば、ユーザー入力が、離れたデバイスから受取ったリクエストではなくて、キー押しまたはローカルなマイクロフォンからの受取ったものであることを検証する）。従って、そうした状況においては、ユーザーがデバイス１００のところに居て、変更を許可する場合に限って、ポリシー記録１１４に対する変更が実行され得る。つまり、悪意あるデバイスまたはデバイス１００の悪意あるコンポーネントは、そうした変更を許可することができない。
【００４７】
エンティティが、プリオペレーティグシステム環境（ユーザー以外）によって信頼された別のエンティティである場合は、ポリシー記録１１４に対する変更はエンティティによってデジタル署名される。オペレーティグシステムローダー１０４は、デジタル署名を検証し、デジタル署名がプリオペレーティグシステム環境によって信頼されたエンティティ（例えば、オペレーティグシステムローダー１０４によって信頼されたもの）からのものであることが検証された場合にのみポリシー記録１１４への変更を実行する。デジタル署名が検証できない場合は、ポリシー記録１１４への変更は行われない。
【００４８】
一つまたはそれ以上の実施例において、ポリシー記録１１４におけるポリシーは、関連のタイムスタンプを有している（例えば、日付と時刻）。ポリシーに関連するタイムスタンプは、ポリシーの一部として含まれてもよいし、また、代替的には、分離して維持されてもよい。例えば、分離したポリシー識別子およびタイムスタンプの記録は、オペレーティグシステムローダー１０４によって維持されてよく、この記録は安全な方法で維持される（例えば、上述の安全な方法で維持されているポリシー記録１１４におけるポリシー、と類似する種々の異なる安全な方法である）。
【００４９】
オペレーティグシステムローダー１０４は、ポリシー記録１１４を変更するかどうかの判断において（例えば、ポリシーの新たなバージョンが、本当にポリシーの現在のバージョンより新しいバージョンかどうかの判断）、こうしたタイムスタンプを使用することができる。ポリシー発行者は、ポリシーの両方のバージョンに対する同一であるが、異なるタイムスタンプの識別子を使用して、ポリシーの一つのバージョンを、そのポリシーの新たなバージョンに置き換えることができる。オペレーティグシステムローダー１０４は、ポリシーの新たなバージョン（および、任意的にポリシーを変更するリクエスト）が信頼されたエンティティであるポリシー発行者からのものであるかどうか、および、ポリシーの新たなバージョンがポリシーの現在のバージョンより最近のタイムスタンプを有しているかどうか、をチェックする。ポリシーの新たなバージョンが信頼されたエンティティであるポリシー発行者からのものであり、かつ、ポリシーの新たなバージョンがポリシーの現在のバージョンより最近のタイムスタンプを有している場合には、オペレーティグシステムローダー１０４は、ポリシーの現在のバージョンをポリシーの新たなバージョンに置き換える。そうでなければ、オペレーティグシステムローダー１０４は、ポリシーの現在のバージョンをポリシーの新たなバージョンには置き換えない。ポリシーの現在のバージョンとポリシーの新たなバージョンは同一のポリシー識別子を有するので、ポリシーの現在のバージョンをポリシーの新たなバージョンと置き換えるかどうかの判断は、ポリシーの新たなバージョンの親リストよりむしろ、ポリシーのバージョンのタイムスタンプに基づくものである。
【００５０】
同様に、ポリシー記録１１４におけるポリシーは、ポリシー発行者によって割り当てられた関連のバージョン番号を有してもよい。ポリシーのバージョン番号は、ポリシーのそれぞれの新たなバージョンに対して増加される（また、セットでの次のバージョン番号が選択される）。バージョン番号は、タイムスタンプと類似に使用することができるが、それは、タイムスタンプ以外の数字（及び／又は他のキャラクター）である。
【００５１】
代替的に、オペレーティグシステムローダー１０４は、ポリシー記録１１４を変更するかどうかを判断するのにタイムスタンプ及び／又はバージョン番号を使用する必要がない。そうした状況において、ポリシー発行者がポリシーの一つのバージョンをそのポリシーの新たなバージョンに置き換えようとする場合、ポリシー発行者は、ポリシーの２つのバージョンに対して異なるポリシー識別子を使用し、ポリシーの新たなバージョンの親リストにおいて置き換えられるべきポリシーのバージョンに係るポリシー識別子を含んでいる。
【００５２】
一つまたはそれ以上の実施例において、ポリシー記録１１４への変更は、また、ブートプロセスの最中にオペレーティグシステムローダー１０４によって書き込まれた値を含んでいる。ポリシーにおける特定のコンフィグレーション設定のために、オペレーティグシステムローダー１０４は、ブートプロセスの最中に、デバイス１００における一つまたはそれ以上の現在の値を獲得する。これらの獲得された値または設定は、ポリシーの一部（または、そうでなければ関連するもの）として保管され、デバイス１００の次回のブートにおいて満足されるべきポリシーの一部として取り扱われる。従って、オペレーティグシステムローダー１０４は、デバイス１００の次回のブートにおいて、これらの獲得された値または設定がオペレーティグシステムコンフィグレーション値１１２によって満足されるかを検証する。
【００５３】
どの設定が、ブートプロセスの最中に獲得された現在の値または設定を有しているかは、異なる方法において特定されてよい。例えば、ポリシーは、特定の値がブートプロセスの最中にオペレーティグシステムローダー１０４によって獲得され、保管されたものであることを示す設定を含み得る。別の実施例として、オペレーティグシステムローダー１０４は、ブートプロセスの最中にオペレーティグシステムローダー１０４によって獲得され、保管されるべき特定の値の指標を伴なって構成することができ（例えば、指標を伴なってプログラムされる）、そうでなければ、指標を獲得することができる。別の実施例では、オペレーティグシステムローダー１０４は、いつデバイス１００のセキュリティが強化または改善されたか（例えば、反マルウェアプログラムがインストールされたとき、ファイアーウォールプログラムがインストールされたとき、など）を検知することができ、その強化または改善されたセキュリティに関連する値または設定を獲得し、保管する（例えば、反マルウェアプログラムの指標を獲得し保管する）。
【００５４】
デバイス１００は複数回ブートされ得るので、それら複数のブートプロセスのうちのどれが、その最中に値が獲得され、保管されるべきブートプロセスであるのかは、異なる方法で特定されてよい。値は、既にある値が獲得され保管されていることなく（または、既に獲得され保管されるべき値が見つからない場合に）、最初にデバイス１００がブートされる最中に獲得され保管されてよい。代替的に、オペレーティグシステムローダー１０４は、デバイス１００のどのブートにおいて値が獲得され保管されるべきかの指標を伴なって構成することができ（例えば、指標を伴なってプログラムされる）、そうでなければ、指標を獲得することができる。代替的には、ポリシー記録１１４におけるポリシーは、デバイス１００のどのブートにおいて値が獲得され保管されるべきかの指標を含んでよい。
【００５５】
代替的に、オペレーティグシステムローダー１０４に対して、（例えば、現在のブートプロセスの最中、または、デバイス１００の次回のブートにおいて）その値が獲得され保管されるべきであるということを示すユーザー入力が受取られてもよい。ユーザー入力は、ボタンまたはキーを押す、スクリーンの所定の場所を触る、音声入力する、などといった、種々の異なる方法で提供することができる。オペレーティグシステムローダー１０４は、入力が、離れたデバイスよりむしろ、デバイス１００のユーザーから受取ったものであることの検証を行う（例えば、ユーザー入力が、離れたデバイスから受取ったリクエストよりむしろ、キー押し又はマイクロフォンから受取ったユーの入力であることを検証する）。従って、そうした状況においては、ユーザーがデバイス１００のところに居て、そうした獲得と保管を許可する場合に限って、値を獲得し保管するリクエストが実行され得る。つまり、悪意あるデバイスまたはデバイス１００の悪意あるコンポーネントは、そうした値の獲得と保管を許可することができない。
【００５６】
図３は、本発明の一つまたはそれ以上の実施例に従って、オペレーティグシステムのコンフィグレーション値の保護を実行するプロセス３００を説明するフローチャートである。プロセス３００は、図１のデバイス１００といった、デバイスによって実行され、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせにおいて実施されてよい。プロセス３００は、デバイス上でオペレーティグシステムが実行される以前に、デバイス上のプリオペレーティグシステム環境の一部として実行される。プロセス３００は、一式のアクト（ａｃｔ）として示されるが、種々のアクトのオペレーションの実行のために示された順序には限定されない。プロセス３００は、オペレーティグシステムコンフィグレーション値を保護するプロセスの実施例である。オペレーティグシステムコンフィグレーション値の保護に係る追加的な説明は、異なる図に関して、ここにおいて含まれる。
【００５７】
プロセス３００において、オペレーティグシステムのためのコンフィグレーション設定及び／又は値を特定するポリシーが獲得される（アクト３０２）。ポリシーは、オペレーティグシステムローダーによって変更され得るが、上述のように、オペレーティグシステムは、ポリシーを変更することができない。
【００５８】
ポリシーは、オペレーティグシステムによって使用されたコンフィグレーション値と比較され（アクト３０４）、オペレーティグシステムによって使用されたコンフィグレーション値がポリシーを満足するかどうかがチェックされる（アクト３０６）。オペレーティグシステムによって使用されたコンフィグレーション値がポリシーを満足するかどうかは、上述のように、種々の異なる方法において判断され得る。
【００５９】
コンフィグレーション値がポリシーを満足する場合は、オペレーティグシステムは、そのコンフィグレーション値を使用してブートすることが許される（アクト３０８）。しかしながら、コンフィグレーション値がポリシーを満足しない場合は、対応するアクションがとられる（アクト３１０）。上述のように、種々の異なった対応するアクションがとられ得る。
【００６０】
図４は、本発明の一つまたはそれ以上の実施例に従って、デバイスにおいてポリシーを変更するプロセス４００を説明するフローチャートである。プロセス４００は、図１のデバイス１００といった、デバイスによって実行され、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせにおいて実施されてよい。プロセス４００は、デバイス上でオペレーティグシステムが実行される以前に、デバイス上のプリオペレーティグシステム環境の一部として実行される。プロセス４００は、一式のアクトとして示されるが、種々のアクトのオペレーションの実行のために示された順序には限定されない。プロセス４００は、デバイスにおいてポリシーを変更するプロセスの実施例である。デバイスにおけるポリシーの変更に係る追加的な説明は、異なる図に関して、ここにおいて含まれる。
【００６１】
プロセス４００においては、オペレーティグシステムが実行されるために、オペレーティグシステムによって満足されるべき、オペレーティグシステムのためのコンフィグレーション設定及び／又は値を特定するポリシーに対する変更が受取られる（アクト４０２）。上述のように、オペレーティグシステムは、ポリシーを変更することができない。
【００６２】
ポリシーに対する変更が、信頼されたエンティティによって許可されたものであるかどうかについてチェックされる（アクト４０４）。そうした信頼されたエンティティは、プリオペレーティグシステム環境（例えば、オペレーティグシステムローダー）によって信頼されたエンティティであり、このチェックは、ユーザーに変更を許可するように促すことにより、または、上述のように、変更が信頼されたエンティティによってデジタル署名されていることを検証することによって行われる。変更が信頼されたエンティティによって許可されない場合は、ポリシーは変更されない。しかしながら、変更が信頼されたエンティティによって許可される場合は、アクト４０２において受取った変更に従って、ポリシーが変更される（アクト４０６）。信頼されたエンティティの許可に加えて、タイムスタンプ、親リスト、などのチェックといった、種々の他の検証またはチェックも、また、上述のように、ポリシーを変更する前に実行され得る。
【００６３】
ここにおいて説明されたオペレーティグシステムコンフィグレーション値を保護する技術は、種々の利用シナリオをサポートする。例えば、オペレーティグシステムコンフィグレーション値およびポリシーは、種々の製造者または開発者のうちの一つからの反マルウェアプログラムがデバイス上で実行されるべきであり、かつ、そうしたソフトウェア対抗プログラムがデバイス上で実行されていなければ、そのオペレーティグシステムをデバイス上にロードし実行するべきではない、と指示することができる。悪意あるプログラムが、オペレーティグシステムをロードし実行するために、反マルウェアプログラムがデバイス上で実行される必要はないものと示して、オペレーティグシステムコンフィグレーション値を変更しようと試みる場合には、次回デバイスがブートされると、オペレーティグシステムローダーコンポーネントが、オペレーティグシステムコンフィグレーション値がポリシーを満足しないことを検知するので、反マルウェアプログラムなしで、オペレーティグシステムがロードされ実行されることはない。
【００６４】
別の実施例として、デバイスは、デフォルトのオペレーティグシステムポリシーを伴なって、製造者または販売者から出荷されてよい。デバイスの購入者は、エンタープライズ環境（例えば、会社またはホームネットワークの一部として）においてデバイスを使用し、彼または彼女が持ちたいと望むエンタープライズポリシーをデフォルトのオペレーティグシステムポリシーの代わりに使用したいと望んでもよい。このエンタープライズポリシーは、デフォルトのオペレーティグシステムポリシーとは異なるセキュリティ関連の設定などを有することができ、エンタープライズポリシーは、デフォルトオペレーティグシステムポリシーの識別子を含む親リストを有する。エンタープライズ環境のアドミニストレーターは、信頼されたエンティティであり得るし、エンタープライズポリシーに対してデジタル署名を生成でき、オペレーティグシステムローダーに対して提供される。エンタープライズポリシーは、信頼されたエンティティによって署名され、親リスト上のデフォルトオペレーティグシステムを特定するので、エンタープライズポリシーは、ポリシー記録におけるデフォルトオペレーティグシステムポリシーを置き換える。しかしながら、後続のデフォルトオペレーティグシステムポリシーがエンタープライズポリシーを置き換えることはない。後続のデフォルトオペレーティグシステムポリシーは、その親リスト上にエンタープライズポリシーを特定しないだろうからである。
【００６５】
図５は、本発明の一つまたはそれ以上の実施例に従って、オペレーティグシステムのコンフィグレーション値の保護を実行するように構成されたコンピューティングデバイス５００を示している。コンピューティングデバイス５００は、例えば、図１のデバイス１００であり、または、デバイス１００が実施される仮想マシンを実行することができる。
【００６６】
コンピューティングデバイス５００は、一つまたはそれ以上のプロセッサまたは処理装置５０２、一つまたはそれ以上のメモリー及び／又はストレージコンポーネント５０６を含む一つまたはそれ以上のコンピューターで読み取り可能な媒体５０４、一つまたはそれ以上の入力／出力（Ｉ／Ｏ）デバイス５０８、および、種々のコンポーネントおよびデバイスがお互いに通信できるようにするバス５１０、を含んでいる。コンピューターで読み取り可能な媒体５０４及び／又は一つまたはそれ以上のＩ／Ｏデバイス５０８は、コンピューターデバイス５００の一部として、または、代替的には、コンピューターデバイスに接続されているものとして、含まれ得る。バス５１０は、一つまたはそれ以上のいくつかのタイプのバス構成を表している。メモリーバスまたはメモリーコントローラー、ペリフェラルバス、加速グラフィックポート、プロセッサ、または、ローカルバスといった、種々の異なるバス構成を使用したものを表している。バス５１０は、有線及び／又は無線のバスを含んでよい。
【００６７】
メモリー／ストレージコンポーネント５０６は、一つまたはそれ以上のコンピューターストレージ媒体を表している。コンポーネント５０６は、揮発性媒体（ランダムアクセスメモリー（ＲＡＭ）といったもの）、及び／又は、不揮発性媒体（読出し専用メモリー（ＲＯＭ）、フラッシュメモリー、光ディスク、磁気ディスク、などといったもの）を含んでよい。コンポーネント５０６は、固定媒体（例えば、ＲＡＭ、ＲＯＭ、固定ハードドライブ、等）、同様に取出し可能媒体（例えば、フラッシュメモリー、取出し可能ハードドライブ、光ディスク、など）を含んでもよい。
【００６８】
ここにおいて説明された技術は、一つまたはそれ以上の処理ユニット５０２によって実行されるインストラクションを伴なって、ソフトウェアで実施されてもよい。異なるインストラクションは、コンピューティングバイス５００の異なるコンポーネントの中に保管されてもよいことが正しく理解されるべきである。処理ユニット５０２の中、処理ユニット５０２の種々のキャッシュメモリーの中、デバイス５００（図示なし）の他のキャッシュメモリーの中、他のコンピューターで読み取り可能な媒体上、などといったものである。加えて、コンピューティングデバイス５００の中でインストラクションが保管された場所は、時間の経過で変更し得ることも理解されるべきである。
【００６９】
一つまたはそれ以上の入力／出力デバイス５０８によって、ユーザーは、コンピューティングデバイス５００に対してコマンドおよび情報を入力することができ、また、情報が、ユーザー及び／又は他のコンポーネントまたはデバイスに対して表示されることができる。入力デバイスの例は、キーボード、カーソルコントロールデバイス（例えば、マウス）、マイクロフォン、スキャナー、などを含んでいる。出力デバイスの例は、ディスプレイ装置（例えば、モニターまたはプロジェクター）、スピーカー、プリンター、ネットワークカード、などを含んでいる。
【００７０】
種々の技術が、ソフトウェアまたはプログラムモジュールの一般的な内容で、ここにおいて説明された。一般的に、ソフトウェアは、ルーチン、プログラム、アプリケーション、オブジェクト、コンポーネント、データ構造、などといった所定のタスクを実行するもの、または所定の抽象的なデータタイプを実行するものを含む。これらのモジュールおよび技術の実施は、コンピューターで読み取り可能な媒体のいくつかの形式で保管され、または媒体にわたり伝送される。コンピューターで読み取り可能な媒体は、コンピューティングデバイスによってアクセスすることができる、あらゆる利用可能な媒体またはメディアであってよい。実施例として、かつ、限定するものではなく、コンピューターで読み取り可能な媒体は、「コンピューターストレージ媒体（“ｃｏｍｐｕｔｅｒ  ｓｔｏｒｇａｅ  ｍｅｄｉａ”）」および「コミュニケーション媒体（“ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  ｍｅｄｉａ”）」を含み得る。
【００７１】
「コンピューターストレージ媒体」は、コンピューターで読み取り可能なインストラクション、データ構造、プログラムモジュール、または、他のデータといった情報を保管するためのあらゆる方法または従来技術において実施される、揮発性および不揮発性媒体、取出し可能および取出し不能媒体を含む。コンピューターストレージ媒体は、これらに限定されるわけではないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリー、または他のメモリー技術、ＣＤ−ＲＯＭ、デジタル多目的ディスク（ＤＶＤ）、磁気カセット、磁気テープ、磁気ディスクストレージまたは磁気ストレージデバイス、または、所望の情報を保管するために使用でき、コンピューターによってアクセスされ得る他のあらゆる媒体、を含んでいる。
【００７２】
「コミュニケーション媒体」は、典型的には、コンピューターで読み取り可能なインストラクション、データ構造、プログラムモジュール、または、搬送波または他の伝送メカニズムといった、変調されたデータ信号における他のデータ、を包含する。コミュニケーション媒体は、また、あらゆる情報配送媒体を含む。用語「変調されたデータ信号（“ｍｏｄｕｌａｔｅｄ  ｄａｔａ  ｓｉｇｎａｌ”）」は、一つまたはそれ以上の特徴セットを有する信号、または信号中の情報をエンコードするといった方法で変更された信号を意味する。実施例として、かつ、限定するものではなく、コミュニケーション媒体は、有線ネットワークまたは直接有線接続といった有線媒体、および、音響、ＲＦ、赤外線、そして他の無線媒体といった、無線媒体を含む。上記のあらゆる組み合わせも、コンピューターで読み取り可能な媒体の範囲内に含まれる。
【００７３】
一般的に、ここにおいて説明されたあらゆる機能または技術は、ソフトウェア、ハードウェア（例えば、固定のロジック回路）、マニュアル処理、またはこれらの組み合せ、を使用して実行され得る。用語「モジュール」および「コンポーネント」は、ここにおいて使用されるように、一般的に、ソフトウェア、ハードウェア、または、これらの組み合わせを表している。ソフトウェアの実行の場合には、モジュールまたはコンポーネントは、プロセッサ（例えば、ＣＰＵ）上で実行されると、特定のタスクを実行するプログラムコードを表している。プログラムコードは、一つまたはそれ以上のコンピューターで読み取り可能なメモリーデバイスに保管され得る。図５にさらなる説明がされている。ここにおいて説明されたオペレーティグシステムコンフィグレーション値を保護する技術の特徴は、プラットフォームに依存することはない。つまり、本技術は、種々のプロセッサを有する種々の市販されているコンピューティングプラットフォーム上で実行される得ることを意味している。
【００７４】
技術的事項が構造的特徴及び／又は方法論的アクトに特有の言葉で説明されてきたが、添付の特許請求の範囲において定められる技術的事項は、上述された特定の特徴またはアクトに必ずしも限定される必要はないことが理解されるべきである。むしろ、上述の特定の特徴およびアクトは、請求項に係る発明の実施例として開示されたものである。
【図１】
0005992457.tif 000002
【図２】
0005992457.tif 000003
【図３】
0005992457.tif 000004
【図４】
0005992457.tif 000005
【図５】
0005992457.tif 000006