(57)【要約】      （修正有）【課題】セキュリティシステム用のフレームワークを提供すること。【解決手段】フレームワークを使用して、どのセキュリティエンジンがセキュリティポリシーを強化するために使用できるかを追跡することができ、また、セキュリティシステムがそれを使用して動作するように構成されたコンピューティングデバイスの状況についての全体観的ビューを維持することができる。フレームワークは、ＡＰＩを提供することによって、セキュリティシステムの諸構成要素について横断的に、均一にセキュリティポリシーを強化することができる。セキュリティシステムは、セキュリティ強化イベントとセキュリティポリシーとの仲介をすることができる。フレームワークはこれらのサービスを提供することによって、ソフトウェア構成要素とセキュリティシステムとの間の対話に関する統一モデルを提示する。【選択図】図２
2006040287.tif 000002
【特許請求の範囲】
【請求項１】
セキュリティポリシーを含むストリームを受信し、
１つまたは複数のセキュリティエンジンのセットそれぞれについて、前記セットのうちの少なくとも１つのセキュリティエンジンに関して前記セキュリティポリシーの一部を作成し、前記作成されたセキュリティポリシーの一部を前記セットのうちの前記少なくとも１つのセキュリティエンジンに送る、第１の構成要素と、
前記作成されたセキュリティポリシーの一部を受信した後に、前記セキュリティエンジンのうちのいずれも失敗を示さない場合、受信した前記セキュリティポリシーの一部を強化する、前記セキュリティエンジンのセットのうちの１つと
を備えることを特徴とするホストコンピューティングデバイスをセキュアにするためのシステム。
【請求項２】
前記セットの各セキュリティエンジンについて、前記第１の構成要素は、前記ポリシーの前記送られた一部が受け入れられたかどうかを示す通知を前記セキュリティエンジンから受信し、失敗のインジケーションは、前記セキュリティポリシーの前記送られた一部が受け入れられなかった旨のインジケーションを含むことを特徴とする請求項１に記載のシステム。
【請求項３】
前記セキュリティエンジンに送られた前記ポリシーの一部が受け入れられた旨のインジケーションがすべてのセキュリティエンジンから受け取られた場合にのみ、前記ポリシーの前記送られた部分をコミットするように前記セキュリティエンジンに命令を送る、第２の構成要素をさらに備えることを特徴とする請求項２に記載のシステム。
【請求項４】
前記第１および第２の構成要素は同じ構成要素であることを特徴とする請求項３に記載のシステム。
【請求項５】
前記セキュリティエンジンに送られた前記ポリシーの一部が受け入れられなかった旨のインジケーションがいずれかのセキュリティエンジンから受け取られた場合に、前記ポリシーの前記送られた部分をロールバックするように前記セキュリティエンジンに命令を送る、第２の構成要素をさらに備えることを特徴とする請求項２に記載のシステム。
【請求項６】
前記第１および第２の構成要素は同じ構成要素であることを特徴とする請求項５に記載のシステム。
【請求項７】
ホストコンピューティングデバイスに対してセキュリティシステムを開始するためのインジケーションを受信するステップと、
セキュリティエンジンのセットからロードするセキュリティエンジンのサブセットを決定するステップと、
前記決定されたセキュリティエンジンのサブセットから各セキュリティエンジンをロードするステップと
を含むことを特徴とするホストコンピューティングデバイスをセキュアにするための方法。
【請求項８】
前記ロードするステップは、前記決定されたセキュリティエンジンのサブセットのセキュリティエンジンに関するマニフェストを読み取るステップを含むことを特徴とする請求項７に記載の方法。
【請求項９】
前記マニフェストは、ファイル名、場所、および前記セキュリティエンジンに関連付けられたグローバル一意識別子を備えることを特徴とする請求項８に記載の方法。
【請求項１０】
前記マニフェストはデジタル署名が付されることを特徴とする請求項９に記載の方法。
【請求項１１】
前記決定するステップは、マニフェストのリストを作成することによってセキュリティエンジンのセットを決定するステップを含むことを特徴とする請求項７に記載の方法。
【請求項１２】
前記決定するステップは、マニフェストのコンテンツを読み取ることによってセキュリティエンジンのセットを決定するステップを含むことを特徴とする請求項７に記載の方法。
【請求項１３】
前記マニフェストはファイルであることを特徴とする請求項１２に記載の方法。
【請求項１４】
前記マニフェストはレジストリの一部であることを特徴とする請求項１２に記載の方法。
【請求項１５】
前記セキュリティシステムを停止する旨のインジケーションを受信すると、各ロードされたセキュリティエンジンをアンロードするステップを含むことを特徴とする請求項７に記載の方法。
【請求項１６】
セキュリティポリシーのインジケーションを受信するステップと、
前記受信したセキュリティポリシーを送るべきであるセキュリティエンジンのセットのサブセットを決定するステップと、
前記決定されたセキュリティエンジンのサブセットに前記セキュリティポリシーを送るステップと
を含むステップを実行するためのコンピュータ実行可能命令を有することを特徴とするコンピュータ読取り可能媒体。
【請求項１７】
前記セキュリティエンジンのサブセットのうちの１つのセキュリティエンジンに対して前記受信したセキュリティポリシーを作成することを含むことを特徴とする請求項１６に記載のコンピュータ読取り可能媒体。
【請求項１８】
セキュリティ強化イベントの通知を受信し、前記受信した通知をアセンブルし、前記通知をソフトウェア構成要素に提供する、ホストサービス構成要素を備えることを特徴とするホストコンピューティングデバイスをセキュアにするためのシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の技術は、一般にオペレーティングシステムに関し、詳細にはセキュリティシステム用のフレームワークに関する。
【背景技術】
【０００２】
アプリケーションプログラムまたはオペレーティングシステムのユーザは、不正を働くかまたは悪意のあるソフトウェアリソースを意図せずにインストールしてしまうことがある。ソフトウェアリソースには、例えばアプリケーションプログラム、ユーザインターフェース、デバイスドライバ、ネットワークプロトコルスタック、および他の電子情報が含まれる。一例としてユーザは、望ましい機能を提供するアプリケーションプログラムをインストールすることができる反面で、望ましくない結果を生むウィルスに感染する可能性がある。さらに例を挙げれば、インストールしたアプリケーションプログラムがトロイの木馬である可能性もある。トロイの木馬とは、有用な機能を提供するか、さもなければ無害であるように見えるが、悪意があるかまたはそれを使用することによって意図せぬ結果を与えるように設計されたプログラムのことである。実際に、任意のソフトウェアリソースは、プログラミングエラー、他のソフトウェアリソースとの競合、または様々な他の理由が原因で、意図せぬ方法で不注意な動作をする場合がある。
【０００３】
ソフトウェアリソースが不正を働くかまたは悪意ある活動を実行する場合、ユーザ、他のソフトウェアリソース、および複数のソフトウェアリソースを管理および調整している可能性のあるオペレーティングシステムに対して、様々な問題を引き起こす可能性がある。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
したがって、こうした問題の可能性を減らすセキュリティシステム用のフレームワークを提供することが強く望まれる。
【課題を解決するための手段】
【０００５】
セキュリティシステム用のフレームワークについて説明する。フレームワークを使用して、どのセキュリティエンジンがセキュリティポリシーを強化するために使用できるかを追跡することができる。セキュリティエンジンとは、アプリケーションまたはオペレーティングシステムの脆弱性を悪用できないようにすることを保証するのに役立つように設計された、セキュリティポリシーを強化するソフトウェアリソースのことである。フレームワークを使用して、セキュリティシステムが共に動作するように構成されたコンピューティングデバイスの状況についての全体観的ビューを維持することができる。フレームワークは、アプリケーションプログラムインターフェースを提供することによって、セキュリティシステムの諸構成要素について横断的に、均一にセキュリティポリシーを強化することができる。セキュリティシステムは、セキュリティ強化イベントとセキュリティポリシーとの仲介をすることができる。フレームワークはこれらのサービスを提供することによって、ソフトウェア構成要素とセキュリティシステムとの間の対話に関する統一モデルを提示する。
【発明を実施するための最良の形態】
【０００６】
セキュリティシステム用のフレームワーク（「フレームワーク」）について説明する。フレームワークは、セキュリティエンジンおよびホストサービス構成要素を含むセキュリティシステムの構成要素に対していくつかの方法で使用することができる。一例として、フレームワークを使用して、どのセキュリティエンジンがセキュリティポリシーを強化するために使用できるかを追跡することができる。さらに他の例として、フレームワークを使用して、セキュリティシステムが共に動作するように構成されたコンピューティングデバイスの状況についての全体観的ビューを維持することができる。セキュリティエンジンとは、アプリケーションまたはオペレーティングシステムの脆弱性を悪用できないようにすることを保証するのに役立つように設計された、セキュリティポリシーを強化するソフトウェアリソースのことである。ホストサービス構成要素は、セキュリティエンジンを構成または調整し、セキュリティエンジンおよびセキュリティシステムがセキュリティポリシーを強化するコンピューティングデバイスに対して他のサービスを提供することができる。
【０００７】
いくつかの実施形態では、フレームワークは、アプリケーションプログラムインターフェース（「ＡＰＩ」）を提供することによって、セキュリティシステムの諸構成要素について横断的に、均一にセキュリティポリシーを強化することができる。ＡＰＩは、セキュリティエンジンの登録および登録取り消し、ならびにセキュリティシステムに関する他の機能の提供に使用される、メソッド、イベント、およびプロパティなどの複数の機能を備える。フレームワークのＡＰＩの機能を使用することによって、例えばセキュリティエンジンの追加、セキュリティエンジンの削除、およびセキュリティエンジンへの変更を、セキュリティシステムに通知することができる。それ故、セキュリティシステムが開始されるとき、セキュリティポリシーが追加、削除、または修正されるとき、あるいは他の状況におかれた場合、セキュリティシステムのホストサービス構成要素は、どのセキュリティエンジンが使用可能であるか、またはどのセキュリティエンジンに通知すべきであるかを決定する。ホストサービス構成要素はどのセキュリティエンジンが使用可能であるかを決定することによって、どのセキュリティエンジンを開始するか、どのセキュリティエンジンと様々なセキュリティポリシーが対話すべきであるか、および例えばセキュリティポリシーへの変更に基づいてどのセキュリティエンジンを再構成すべきであるかを決定する。このようにしてセキュリティシステムは、セキュリティシステムの諸構成要素について横断的に、均一にセキュリティポリシーを強化する。
【０００８】
いくつかの実施形態では、フレームワークはセキュリティシステムが動作するコンピューティングデバイスの全体観的ビューを、セキュリティシステムが提示できるようにするものである。一例を挙げると、ウィルス検出システムがウィルスに関する情報を提示し、ファイアウォールシステムがファイアウォールに関する情報を提示できる一方で、セキュリティシステムはウィルス、ファイアウォール、およびコンピュータデバイス上で動作しているセキュリティエンジンが対象とする他のセキュリティ機能に関する情報を提示できる場合がある。
【０００９】
いくつかの実施形態では、セキュリティシステムはセキュリティ強化イベントおよびセキュリティポリシーを仲介することによって、この全体観的ビューを提示する。仲介には、情報ソース側で情報を収集およびアセンブルすること、ならびに情報ソースから情報を入手可能にすることが含まれる。仲介は、セキュリティシステムのホストサービス構成要素によって実行される。セキュリティ強化イベントを仲介することによって、ホストサービス構成要素がアセンブルされた情報をアプリケーションに提供し、次いでアプリケーションがアセンブルされた情報をユーザに提供できるようになる可能性がある。セキュリティポリシーを仲介することによって、ホストサービス構成要素がセキュリティポリシーの適切なサブセットを関連するセキュリティエンジンに提供できるようになる可能性がある。
【００１０】
いくつかの実施形態では、セキュリティエンジンは、オペレーティングシステムの脆弱性を悪用できないことを保証するのに役立つセキュリティポリシーを強化する。セキュリティポリシーは、セキュリティ強化イベントおよびセキュリティ強化アクションのインジケーションを備える。セキュリティ強化イベントとは、セキュリティポリシーが定義されるイベントのことである。例を挙げると、セキュリティ強化イベントは、ネットワークポートでのある種のメッセージの送信または受信、実行可能ファイルの修正要求、およびハードディスクのフォーマット要求とすることができる。セキュリティ強化アクションとは、セキュリティ強化イベントに関するセキュリティポリシーに指定されたアクションのことである。例を挙げると、セキュリティ強化アクションは、例えばイベントを許可すること、イベントを拒否すること、ユーザに通知すること、またはユーザに入力を要求することなどを含むことができる。
【００１１】
セキュリティエンジンは、様々なセキュリティ強化アクションを実行することによって、セキュリティ強化イベントに応答することができる。セキュリティエンジンによって実行される強化アクションの例には、電子ウィルスからの保護、ネットワークアクセスの許可、未許可のユーザまたはソフトウェアリソースによる侵入の検出、古いソフトウェアリソースの検出、ソフトウェアリソースの自動「ロックダウン」（例えば管理者からの信号に応答して）、ならびにユーザおよびソフトウェアリソースによる望ましくない挙動の全般的なブロックが含まれるが、これらに限定されるものではない。
【００１２】
セキュリティエンジンは、ホストサービス構成要素からセキュリティポリシーを受信することができる。ホストサービス構成要素は、セキュリティエンジンの調整およびセキュリティポリシー情報の伝送を含む、様々なタスクを実行する。ホストサービス構成要素は、セキュリティエンジンのロード、アンロード、および構成も実行することができる。
【００１３】
ホストサービス構成要素は、セキュリティポリシー情報の受信が可能または不可能、あるいは他の方法で構成可能な、セキュリティエンジンがわかっている必要がある場合がある。セキュリティエンジンは、セキュリティシステムを構成した後にセキュリティシステムに追加することができる。その後、セキュリティエンジンを削除、あるいはセキュリティポリシーが追加、削除、または改訂されたときなどに再構成することもできる。
【００１４】
次に図を見ると、図１には、フレームワークを実施可能な好適なコンピューティングシステム環境１００の一例が示されている。コンピューティングシステム環境１００は好適なコンピューティング環境の一例に過ぎず、フレームワークの使用範囲または機能に関するいかなる制限をも示唆することを意図するものではない。さらにコンピューティングシステム環境１００は、例示的コンピューティングシステム環境１００に示された構成要素のうちのいずれか１つまたはこれらの組合せに関する、いかなる依存関係または要件をも有するものと解釈されるべきではない。
【００１５】
フレームワークは、多数の他の汎用または特定用途向けのコンピューティングシステム環境または構成で動作可能である。フレームワークと共に使用するのに好適な可能性のあるよく知られたコンピューティングシステム、環境、および／または構成には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、タブレットデバイス、マルチプロセッサシステム、マイクロプロセッサベースシステム、セットトップボックス、プログラム可能家電、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記の任意のシステムまたはデバイスを含む分散コンピューティング環境、およびその他が含まれるが、これらに限定されるものではない。
【００１６】
フレームワークは、コンピュータによって実行されているプログラムモジュールなどのコンピュータ実行可能命令との一般的な関連において説明することができる。一般に、プログラムモジュールには、特定のタスクを実行するかまたは特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、構成要素、データ構造、およびその他が含まれる。フレームワークは、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される、分散コンピューティング環境でも実施可能である。分散コンピューティング環境では、メモリ記憶デバイスを含むローカルおよび／またはリモートのコンピュータ記憶媒体にプログラムモジュールを配置することができる。
【００１７】
図１を参照すると、フレームワークを実施するための例示的システムには、コンピュータ１１０の形の汎用コンピューティングデバイスが含まれる。コンピュータ１１０の構成要素は、処理ユニット１２０、システムメモリ１３０、および、システムメモリ１３０を含む様々なシステム構成要素を処理ユニット１２０に結合するシステムバス１２１を含むことができるが、これらに限定されるものではない。システムバス１２１は、メモリバスまたはメモリコントローラ、周辺バス、および様々なバスアーキテクチャのうちのいずれかを使用するローカルバスを含む、いくつかのタイプのバス構造のうちのいずれかとすることができる。例を挙げると、こうしたアーキテクチャには、産業標準構成（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ電子装置規格化協会（ＶＥＳＡ）ローカルバス、およびメザニンバスとしても知られる周辺部品相互接続（ＰＣＩ）バスが含まれるが、これらに限定されるものではない。
【００１８】
コンピュータ１１０は、通常は様々なコンピュータ読取り可能媒体を含む。コンピュータ読取り可能媒体は、コンピュータ１１０によってアクセス可能な任意の使用可能媒体とすることが可能であり、揮発性および不揮発性媒体ならびに取り外し可能および取り外し不能媒体の両方を含む。例を挙げると、コンピュータ読取り可能媒体はコンピュータ記憶媒体および通信媒体を備えることができるが、これらに限定されるものではない。コンピュータ記憶媒体は、コンピュータ読取り可能命令、データ構造、プログラムモジュール、または他のデータなどの情報を格納するための任意の方法または技術で実装された、揮発性および不揮発性、取り外し可能および取り外し不能の媒体を含む。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは、所望の情報を格納するために使用可能でありコンピュータ１１０によってアクセス可能な任意の他の媒体が含まれるが、これらに限定されるものではない。通信媒体は、通常、コンピュータ読取り可能命令、データ構造、プログラムモジュール、あるいは搬送波または他の移送メカニズムなどの変調データ信号内の他のデータを具体化し、任意の情報搬送媒体を含む。「変調データ信号」という用語は、信号内で情報を符号化するような方法でその特徴のうちの１つまたは複数を設定または変更した信号を意味する。例を挙げると、通信媒体は、ワイヤードネットワークまたはダイレクトワイヤード接続などの有線媒体と、音波、ＲＦ、赤外線、および他の無線媒体などの無線媒体を含むが、これらに限定されるものではない。上記のうちのいずれかの組合せも、コンピュータ読取り可能媒体の範囲に含まれるものとする。
【００１９】
システムメモリ１３０は、読取り専用メモリ（ＲＯＭ）１３１およびランダムアクセスメモリ（ＲＡＭ）１３２などの揮発性および／または不揮発性メモリの形のコンピュータ記憶媒体を含む。起動時などにコンピュータ１１０内の要素間で情報を転送するのを助ける基本ルーチンを含む基本入力／出力システム１３３（ＢＩＯＳ）は、通常はＲＯＭ１３１に格納される。ＲＡＭ１３２は、通常、処理ユニット１２０によって即時アクセス可能および／または現在動作中のデータおよび／またはプログラムモジュールを含む。例を挙げると、図１にはオペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７が示されているが、これらに限定されるものではない。
【００２０】
コンピュータ１１０は、他の取り外し可能／取り外し不能、揮発性／不揮発性のコンピュータ記憶媒体も含むことができる。単なる例を挙げると、図１には、取り外し不能の不揮発性磁気媒体からの読取りまたはこれへの書き込みを行うハードディスクドライブ１４１、取り外し可能の不揮発性磁気ディスク１５２からの読取りまたはこれへの書き込みを行う磁気ディスクドライブ１５１、およびＣＤ−ＲＯＭまたは他の光媒体などの取り外し可能の不揮発性光ディスク１５６からの読取りまたはこれへの書き込みを行う光ディスクドライブ１５５が示されている。例示的なオペレーティング環境で使用可能な他の取り外し可能／取り外し不能、揮発性／不揮発性コンピュータ記憶媒体には、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭ、およびその他が含まれるが、これらに限定されるものではない。ハードディスクドライブ１４１は、通常、インターフェース１４０などの取り外し不能メモリインターフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は、通常、インターフェース１５０などの取り外し可能メモリインターフェースによってシステムバス１２１に接続される。
【００２１】
上記で論じ図１に示されたドライブおよびそれらに関連するコンピュータ記憶媒体は、コンピュータ読取り可能命令、データ構造、プログラムモジュール、およびコンピュータ１１０に関する他のデータの、ストレージを提供する。例えば図１では、ハードディスクドライブ１４１はオペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７を格納しているように示されている。これらの構成要素は、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７と同じであっても異なるものであってもよいことに留意されたい。本明細書では、少なくとも異なるコピーであることを示すために、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７には異なる番号が与えられている。ユーザは、タブレットまたは電子デジタイザ１６４、マイクロフォン１６３、キーボード１６２、および、通常はマウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイス１６１などの入力デバイスを介して、コンピュータ１１０にコマンドおよび情報を入力することができる。図１に示されていない他の入力デバイスには、ジョイスティック、ゲームパッド、衛星放送用パラボラアンテナ、スキャナ、またはその他が含まれる場合がある。これらおよび他の入力デバイスは、しばしば、システムバスに結合されたユーザ入力インターフェース１６０を介して処理ユニット１２０に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）などの他のインターフェースおよびバス構造によって接続することも可能である。モニタ１９１または他のタイプのディスプレイデバイスも、ビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に接続される。モニタ１９１は、タッチスクリーンパネルまたはその他と一体型にすることもできる。モニタおよび／またはタッチスクリーンパネルは、タブレットタイプのパーソナルコンピュータなどのコンピュータ１１０が組み込まれたハウジングに物理的に結合できることに留意されたい。加えて、コンピュータ１１０などのコンピュータは、出力周辺インターフェース１９４またはその他を介して接続可能な、スピーカ１９５およびプリンタ１９６などの他の周辺出力デバイスも含むことができる。
【００２２】
コンピュータ１１０は、リモートコンピュータ１８０などの１つまたは複数のリモートコンピュータへの論理接続を使用するネットワーク環境で動作可能である。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の共通ネットワークノードとすることが可能であり、通常は、コンピュータ１１０に関して上記で説明した要素の多くまたはすべてを含むが、図１にはメモリ記憶デバイス１８１のみが示されている。図１に示された論理接続には、ローカルエリアネットワーク（ＬＡＮ）１７１およびワイドエリアネットワーク（ＷＡＮ）１７３が含まれるが、他のネットワークを含むこともできる。こうしたネットワーキング環境は、オフィス、企業規模コンピュータネットワーク、イントラネット、およびインターネットなどで普及している。例えばこのフレームワークでは、コンピュータ１１０はデータの移動元であるソースマシンを備えることが可能であり、リモートコンピュータ１８０は宛先マシンを備えることが可能である。しかしながら、ソースおよび宛先マシンがネットワークまたは任意の他の手段によって接続される必要はなく、その代わりに、ソースプラットフォームによる書き込みおよび宛先プラットフォームによる読取りが可能な任意の媒体を介して、データを移動させることができる。
【００２３】
ＬＡＮネットワーキング環境で使用される場合、コンピュータ１１０は、ネットワークインターフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境で使用される場合、コンピュータ１１０は、通常、インターネットなどのＷＡＮ１７３を介して通信を確立するためのモデム１７２または他の手段を含む。モデム１７２は内蔵型または外付け型とすることが可能であり、ユーザ入力インターフェース１６０または他の適切なメカニズムを介してシステムバス１２１に接続することができる。ネットワーク環境では、コンピュータ１１０に関して示されたプログラムモジュールまたはその一部を、リモートメモリ記憶デバイスに格納することができる。例を挙げると、図１はメモリデバイス１８１上に常駐しているものとしてリモートアプリケーションプログラム１８５を示しているが、これに限定されるものではない。図示されたネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立する他の手段が使用可能であることを理解されよう。
【００２４】
図１では、特定の方法で配置構成された特定のコンピュータシステム上に常駐するものとして様々な機能およびデータが示されているが、当業者であれば、こうした機能およびデータが、様々な配置構成の複数のコンピュータシステムに渡って、様々な他の方法で分散可能であることを理解されよう。通常、フレームワークのオペレーションは前述のように構成されたコンピュータシステムを使用してサポートされるが、当業者であれば、フレームワークが様々なタイプおよび構成であり様々な構成要素を有するデバイスを使用して実施可能であることを理解されよう。
【００２５】
図２は、いくつかの実施形態でのセキュリティシステムの構成要素を示すブロック図である。セキュリティシステムは、カーネルモード構成要素２０２、ユーザモード構成要素２０４、カーネルモード構成要素からユーザモード構成要素へとイベントを転送するためのＷＩＮＤＯＷＳ（登録商標）用のイベント追跡（Ｅｖｅｎｔ  Ｔｒａｃｉｎｇ）などのイベント転送構成要素２０６、およびクライアントアプリケーションプログラム２０８を備える。イベント転送構成要素は、非同期的または同期的に動作可能である。ＷＩＮＤＯＷＳ（登録商標）用のイベント追跡以外の構成要素を、例えばアプリケーションプログラムインターフェース呼び出し、ソケットなどを含む、ユーザモードとカーネルモードの構成要素間での通信に使用することができる。
【００２６】
システムは、セキュリティエンジン２１０および関連するポリシーテーブル２１２も含む。いくつかの実施形態では、セキュリティエンジン２１０は、セキュリティエンジンに関する様々な動作を実行するために互いに通信するユーザモード部分およびカーネルモード部分を有することができる。関連する各ポリシーテーブルは、セキュリティエンジンが参照する規則を含む。別の方法として、セキュリティエンジンは１つのポリシーテーブルまたはいくつかのポリシーテーブルを使用することが可能であり、こうした場合、テーブルはどのセキュリティエンジン用にポリシーが示されるかを識別することになる。
【００２７】
システムは、ホストサービス構成要素２１４および関連するセキュリティポリシーテーブル２１６をさらに含む。セキュリティポリシーテーブルは、セキュリティポリシーに関する規則と規則に関連付けられたデータとを含む。
【００２８】
システムは１つまたは複数のマニフェスト２１８も含む。マニフェストは、セキュリティエンジンに関する情報を識別することができる。その例として、マニフェストは、セキュリティエンジンに関するコンピューティングステップを実行するファイル（例えばダイナミックリンクライブラリ）のファイル名および場所を識別することができる。マニフェストは、セキュリティエンジンに関連付けられたグローバル一意識別子（「ＧＵＩＤ」）も有することができる。いくつかの実施形態では、１つのマニフェストが複数のセキュリティエンジンに関連付けられる場合がある。別の方法として、セキュリティシステムは、それぞれが１つのセキュリティエンジンに関連付けられた複数のマニフェストを有する場合がある。いくつかの実施形態では、マニフェストにデジタル署名を付することができる。いくつかの実施形態では、マニフェストをファイルとして、あるいはレジストリ内または実際には任意のコンピュータ読取り可能媒体内に格納することができる。
【００２９】
カーネルモード構成要素、ユーザモード構成要素、およびイベント転送構成要素は、通常はすべてオペレーティングシステム２００内に含まれる。オペレーティングシステムはコンピューティングシステム環境１００で動作する。
【００３０】
図３は、いくつかの実施形態におけるセキュリティシステムの起動（ｓｔａｒｔｕｐ）ルーチンを示す流れ図である。ホストサービス構成要素は、セキュリティシステムが開始されたときにルーチンを実行する。ルーチンはブロック３０２で開始される。
【００３１】
ブロック３０６で、ルーチンはマニフェストを列挙して読み取る。マニフェストについては、図２およびブロック２１８に関して上記で説明している。セキュリティシステムは１つまたは複数のマニフェストを有することができる。いくつかの実施形態では、セキュリティシステムは各セキュリティエンジンに対して１つのマニフェストを有する。マニフェストを読み取ると、ホストサービス構成要素はセキュリティエンジンに関する情報を決定することができる。その例としてホストサービス構成要素は、ファイル名、場所、ＧＵＩＤ、およびセキュリティエンジンに関する他の属性を決定することができる。
【００３２】
ブロック３０８で、ルーチンはセキュリティエンジンを列挙する。セキュリティエンジンの列挙には、示されたセキュリティエンジンのリストを決定するために１つまたは複数のマニフェストをトラバースすることが含まれる場合がある。いくつかの実施形態では、ルーチンは、２次ストレージ（例えばハードディスク）に格納されたレジストリまたはファイルをレビューすることによって、セキュリティエンジンを列挙することができる。
【００３３】
ブロック３１０と３１８の間で、ルーチンはセキュリティエンジンを介してループし、各セキュリティエンジンに対するいくつかの機能を実行する。ブロック３１２で、ルーチンは各セキュリティエンジン用のセキュリティポリシーを作成するために、ｐｒｅｐａｒｅ＿ｓｅｃｕｒｉｔｙ＿ｐｏｌｉｃｙサブルーチンを呼び出す。このサブルーチンについては、図５に関して以下で詳細に説明する。ホストサービス構成要素はｐｒｅｐａｒｅ＿ｓｅｃｕｒｉｔｙ＿ｐｏｌｉｃｙサブルーチンを非同期的に呼び出すことが可能であり、これがタイミング良く戻らない場合、ホストサービス構成要素はセキュリティシステムが開始できないと判定する場合がある。いくつかの実施形態では、セキュリティエンジンがｐｒｅｐａｒｅ＿ｓｅｃｕｒｉｔｙ＿ｐｏｌｉｃｙサブルーチンを実行する。こうした場合、セキュリティエンジンがサブルーチンへの呼び出しから戻る前に（例えば他のセキュリティエンジンが失敗（ｆａｉｌｕｒｅ）を送信する場合−失敗に関する詳細は以下を参照のこと）、ホストサービス構成要素は、セキュリティポリシーをロールバックするためにｐｒｅｐａｒｅ＿ｓｅｃｕｒｉｔｙ＿ｐｏｌｉｃｙサブルーチンを実行するセキュリティエンジンに、信号を送信することができる。いくつかの実施形態では、セキュリティポリシーをロールバックするための呼び出しを非同期的に実行することができる。この呼び出しが非同期的に実行可能であるため、セキュリティポリシーのロールバック時にセキュリティエンジンが実行できる処理によってホストサービス構成要素を保持しておく必要がない。ブロック３１４で、ルーチンは、各セキュリティエンジンをロードするためにｌｏａｄ＿ｓｅｃｕｒｉｔｙ＿ｅｎｇｉｎｅサブルーチンを呼び出す。このサブルーチンについては、図４に関して以下で詳細に説明する。
【００３４】
ブロック３１６で、ルーチンは作成されたセキュリティポリシーを各セキュリティエンジンに送る。
【００３５】
ブロック３２０で、ルーチンは、作成されたセキュリティポリシーが送られたセキュリティエンジンのうちのいずれかが失敗を報告しているかどうかを判別する。セキュリティエンジンは、例えば、開始できない、ホストサービス構成要素によって送られたセキュリティポリシーを受信できない、または様々な他の理由によって失敗した、などの場合に、失敗を報告することができる。セキュリティエンジンが失敗を報告すると、ルーチンはブロック３２２へ進む。そうでない場合、ルーチンはブロック３２４へ進み、ホストサービス構成要素が以前にセキュリティエンジンに送ったセキュリティポリシーをコミットするようにという信号をセキュリティエンジンに発信する。ブロック３２２で、ホストサービス構成要素は、ホストサービス構成要素が以前にセキュリティエンジンに送ったセキュリティポリシーをロールバックするようにという信号をセキュリティエンジンに発信する。いくつかの実施形態では、ルーチンは各セキュリティエンジンに、そのセキュリティポリシーを順次コミットするように命じる。こうした場合、ルーチンはセキュリティエンジンに信号を送信し、次のセキュリティエンジンに信号を発信する前にセキュリティエンジンがそのセキュリティポリシーをコミットするのを同期的に待つ。破滅的な障害が発生した場合（例えば、セキュリティエンジンのユーザモード部分とカーネルモード部分の間に通信障害が生じた場合）、ホストサービス構成要素は以前のセキュリティポリシーの再ロードを試みることができる。ブロック３２２または３２４のいずれかの後、ブロック３２６でルーチンは戻る。
【００３６】
図４は、いくつかの実施形態におけるセキュリティシステムのｌｏａｄ＿ｓｅｃｕｒｉｔｙ＿ｅｎｇｉｎｅルーチンを示す流れ図である。ホストサービス構成要素は、セキュリティポリシーを強化するために使用可能であると判別したセキュリティエンジンのロードを試みる際に、このルーチンを実行することができる。ルーチンはブロック４０２で開始され、セキュリティエンジンのインジケーションをパラメータとして受信する。
【００３７】
ブロック４０４で、ルーチンは、示されたセキュリティエンジンに関連付けられたダイナミックリンクライブラリ（「ＤＬＬ」）をロードする。ＤＬＬ以外の形でセキュリティエンジンが実施された場合、セキュリティエンジンをロードするために適切な代替オペレーティングシステム呼び出しが実行される。
【００３８】
ブロック４０６で、ルーチンは、ロードされたセキュリティエンジンの初期設定機能を呼び出す。セキュリティエンジンの初期設定機能は、セキュリティエンジンを例えばセキュリティエンジンのデフォルト状態に初期設定する。デフォルト状態では、セキュリティエンジンは、いかなるセキュリティポリシーも強化しない単なるシェルとすることができる。別の方法として、デフォルト状態は、セキュリティエンジンに以前の構成に基づいた何らかのデフォルト強化を実行させることもできる。ホストサービス構成要素は、各セキュリティエンジンについて非同期的に初期設定機能を呼び出し、すべての呼び出しが完了するのを待ってから続行することができる（図示せず）。ブロック４０８で、ルーチンは、セキュリティエンジンのロードまたはセキュリティエンジンの初期設定のいずれかにおいて、失敗があったかどうかを判別する。セキュリティエンジンは、そのＤＬＬが見つからない、デジタル署名が付された後で修正されている、またはいくつかの他の理由の場合に、ロードまたは初期設定で失敗する場合がある。
【００３９】
セキュリティエンジンのロードまたは初期設定時に失敗した場合、ルーチンはブロック４１０で失敗のインジケーションを戻す。そうでない場合、ルーチンはブロック４１２で成功のインジケーションを戻す。
【００４０】
図５は、いくつかの実施形態におけるセキュリティシステムのｐｒｅｐａｒｅ＿ｓｅｃｕｒｉｔｙ＿ｐｏｌｉｃｙルーチンを示す流れ図である。ｐｒｅｐａｒｅ＿ｓｅｃｕｒｉｔｙ＿ｐｏｌｉｃｙルーチンは、ホストサービス構成要素またはセキュリティエンジンのいずれかによって実行することができる。
【００４１】
ルーチンはブロック５０２で開始される。ルーチンがホストサービス構成要素によって実行された場合、ルーチンはパラメータとしてセキュリティエンジンのインジケーションを受信する。しかしながら、ルーチンがセキュリティエンジンによって実行された場合、ルーチンはパラメータとしてセキュリティエンジンのインジケーションを受信しない。
【００４２】
ブロック５０４で、ルーチンはセキュリティポリシーをロードする。セキュリティシステムは１つまたは複数のセキュリティポリシーを有する可能性がある。ホストサービス構成要素は、ホストデバイス構成要素に関連付けられたコンピューティングシステムに直接接続されたストレージデバイスからセキュリティポリシーをロードするか、またはネットワークを介してアクセスされたストレージデバイスからセキュリティポリシーをロードすることができる。いくつかの実施形態では、ルーチンはセキュリティポリシーのインジケーションを受信する。別の方法として、ルーチンはレジストリの一部を評価することによって、セキュリティポリシーの場所を特定する。
【００４３】
ブロック５０６で、ルーチンはセキュリティポリシーをマージする。セキュリティポリシーのマージには、セキュリティポリシーをより大規模なセキュリティポリシーに組み込むことが含まれる場合がある。いくつかの実施形態では、セキュリティポリシーを拡張可能マークアップ言語（「ＸＭＬ」）で表すことができる。複数のセキュリティポリシーがＸＭＬで示される場合、セキュリティポリシーのマージには、個々のポリシーの効果が保持されるように、すべてのセキュリティポリシーをより大規模なＸＭＬストリームに組み込むことが含まれる場合がある。
【００４４】
ブロック５０８で、ルーチンは、示されたセキュリティエンジンまたはルーチンを実行中のセキュリティエンジンのいずれか（適宜）に適用可能な、マージされたセキュリティポリシーのサブセットを決定する。一例として、ネットワークに関するセキュリティポリシーが、ネットワークポリシーを強化するセキュリティエンジンに適用できる場合がある。これに対して、ソフトウェアリソースのバンジョン番号チェックに関するセキュリティポリシーが、ネットワークポリシーを強化するセキュリティエンジンに適用できない場合がある。
【００４５】
ブロック５１０で、ルーチンは、ブロック５０８で作成されたセキュリティポリシーとしてその呼び出し側にセキュリティポリシーのサブセットを戻す。
【００４６】
図６は、いくつかの実施形態におけるセキュリティシステムのｕｐｄａｔｅ＿ｓｅｃｕｒｉｔｙ＿ｐｏｌｉｃｙルーチンを示す流れ図である。ルーチンは、ホストサービス構成要素がセキュリティポリシーの更新を決定した場合に、ホストサービス構成要素によって実行することができる。ホストサービス構成要素は、例えば新しいセキュリティポリシーまたはセキュリティポリシーへの更新を受信した場合に、セキュリティポリシーの更新を決定することができる。
【００４７】
ルーチンはブロック６０２で開始される。いくつかの実施形態では、ルーチンは新規の、更新された、または削除された、セキュリティポリシーのインジケーションを受信することができる。
【００４８】
ブロック６０４と６１０の間で、ルーチンはセキュリティエンジンをループしてセキュリティエンジンを更新する。ブロック６０６で、ルーチンは各セキュリティエンジンについてセキュリティポリシーを作成する。ルーチンは、図５に関して上記で説明したｐｒｅｐａｒｅ＿ｓｅｃｕｒｉｔｙ＿ｐｏｌｉｃｙサブルーチンを呼び出すことによってセキュリティポリシーを作成する。
【００４９】
ブロック６０８で、ルーチンは作成したセキュリティポリシーをセキュリティエンジンに送る。
【００５０】
ブロック６１２で、ルーチンは、セキュリティポリシーが送られたセキュリティエンジンのいずれかが失敗を報告したかどうかを判別する。セキュリティエンジンが失敗を報告した場合、ルーチンはブロック６１４に進み、セキュリティポリシーをロールバックする。そうでない場合、ルーチンはブロック６１６に進み、セキュリティポリシーをコミットするようにという信号をセキュリティエンジンに発信する。
【００５１】
ブロック６１４または６１６のいずれかの後、ルーチンはブロック６１８でその呼び出し側に戻る。
【００５２】
いくつかの実施形態で、フレームワークはセキュリティエンジンをシャットダウンするシャットダウン方法を有する場合がある。
【００５３】
いくつかの実施形態で、フレームワークは、セキュリティポリシーの規則に関するデータを規則それ自体とは無関係に更新することができる。この機能をサポートするために、フレームワークはいくつかのメソッド、プロパティ、およびイベントをサポートする。一例として、セキュリティエンジンはＲｅａｄＡｎｄＲｅｇｉｓｔｅｒＮｏｔｉｆｙＤａｔａメソッドを呼び出して、このメソッドへの呼び出しで示されたデータが変更された場合にセキュリティエンジンへの通知を望んでいることを示すことができる。他の例として、データが変更された場合に、ホストサービス構成要素はＷｒｉｔｅＤａｔａメソッドを呼び出して、データが変更された旨の通知をセキュリティエンジンが受けるような方法でデータを変更することができる。同様にＷｒｉｔｅＣｏｎｆｉｇメソッドは、以前にＲｅａｄＡｎｄＲｅｇｉｓｔｅｒＮｏｔｉｆｙＣｏｎｆｉｇメソッドを呼び出したセキュリティエンジンに対してデータの変更が通知されるような方法で、ホストサービス構成要素がセキュリティエンジンのサブセット間で構成データを配布できるようにすることができる。
【００５４】
セキュリティエンジンは、セキュリティポリシーに関連付けられたデータも変更することができる。セキュリティエンジンはデータを変更すると、ＷｒｉｔｅＳｅｃｕｒｉｔｙＥｎｇｉｎｅＤａｔａメソッドを使用して、セキュリティシステムの他の構成要素にデータが変更されていることを示すことができる。このように実行することによって、セキュリティエンジンは他のセキュリティエンジンと通信することができる。
【００５５】
データの変更通知を受信するように登録された構成要素は、通知の受信登録を解除するために対応するメソッドを呼び出すこともできる。
【００５６】
セキュリティエンジンは、ユーザに通知するかまたはユーザに照会するかを決定することができる。一例として、セキュリティエンジンはセキュリティポリシーの規則に応答して、インターネットブラウジングアプリケーションがネットワークポート８０８０を介した通信を試みた場合に、ユーザに通知するように決定することができる。同様に、セキュリティエンジンは、個人的な財務アプリケーションにネットワーク８０８０を介した情報の送信を許可すべきであるかどうかのインジケーションについて、ユーザに照会するように決定することができる。セキュリティエンジンがユーザへの通知またはユーザへの紹介のいずれかを決定した場合、セキュリティエンジンはこれらの動作を実行するためにフレームワークのメソッドを呼び出すことができる。セキュリティエンジンがユーザに通知を送信した後、セキュリティエンジンは処理を続行することができる。他方で、セキュリティエンジンがユーザに照会した後、セキュリティエンジンはユーザが応答するまで処理を中断することができる。さらにセキュリティエンジンはタイムアウトして、例えばデフォルト値を使用することによってユーザの応答なしに処理を続行することもできる。
【００５７】
いくつかの実施形態では、セキュリティシステムはマニフェストを監視し、セキュリティエンジンを動的に追加、修正、または削除することができる。この動作を動的に実行することによって、セキュリティシステムを再起動しなくてもよい場合がある。
【００５８】
いくつかの実施形態では、セキュリティシステムは、デジタル署名を使用することなど、マニフェストの整合性を保証することを含む様々な手段を介して、それ自体を保護することができる。
【００５９】
一実施形態では、新しいセキュリティエンジンを不許可とすることができる。
【００６０】
上記の様々な方法を、コールバックルーチンで実施することができる。一例として、ある方法が呼び出された場合、呼び出し側は、呼び出された方法が成功または失敗のインジケーションを戻すために使用できる方法のインジケーションを提供することができる。そのように実行することによって、呼び出し側は、呼び出された方法が完了するのを同期的に待った後にそれ自体の処理を続行する必要がない。
【００６１】
以上、本発明の特定の実施形態について例示の目的で説明してきたが、前述の内容から、本発明の精神および範囲を逸脱することなしに様々な修正が可能であることを理解されよう。したがって、添付の特許請求の範囲による制限を除いて、本発明が制限されることはない。
【図面の簡単な説明】
【００６２】
【図１】説明したシステムの実施形態に好適なコンピューティングシステムの構成要素を示すブロック図である。
【図２】いくつかの実施形態におけるセキュリティシステムの構成要素を示すブロック図である。
【図３】いくつかの実施形態におけるセキュリティシステムのｓｔａｒｔｕｐルーチンを示す流れ図である。
【図４】いくつかの実施形態におけるセキュリティシステムのｌｏａｄ＿ｓｅｃｕｒｉｔｙ＿ｅｎｇｉｎｅルーチンを示す流れ図である。
【図５】いくつかの実施形態におけるセキュリティシステムのｐｒｅｐａｒｅ＿ｓｅｃｕｒｉｔｙ＿ｐｏｌｉｃｙルーチンを示す流れ図である。
【図６】いくつかの実施形態におけるセキュリティシステムのｕｐｄａｔｅ＿ｓｅｃｕｒｉｔｙ＿ｐｏｌｉｃｙルーチンを示す流れ図である。
【符号の説明】
【００６３】
２００  オペレーティングシステム
２０２  カーネルモード構成要素
２０４  ユーザモード構成要素
２０６  イベント転送構成要素
２０８  クライアントアプリケーション
２１０  セキュリティエンジン
２１２  ポリシー
２１４  ホストサービス
２１６  ポリシーテーブル
２１８  マニフェスト
【図１】
2006040287.tif 000003
【図２】
2006040287.tif 000004
【図３】
2006040287.tif 000005
【図４】
2006040287.tif 000006
【図５】
2006040287.tif 000007
【図６】
2006040287.tif 000008