下掲の明細書本文には、説明のため多数の詳細を記載するが、これらの具体的な詳細を用いることなしに本発明を実施できることは、当業者に理解されるであろう。他の例では、本発明の記述を余計な詳細で不明瞭にしないように、周知の構造及び装置がブロック図の形で示される。
I.セキュリティ評価を備えるオペレーティングシステム
図1は、実行が要求された様々な操作のセキュリティを評価するコンピューティングデバイスのオペレーティングシステム100を示す。要求された操作は、アプリケーションの実行、アプリケーションのインストール、文書を開くことなどであり得る。要求された操作のセキュリティは、オペレーティングシステムによって提供されるセキュリティフレームワークの一部であるセキュリティ評価モジュールによって評価される。このセキュリティ評価に基づいて、要求された操作を終了するか、又はその処理の続行を許可する。
図1に示すように、オペレーティングシステム100は、セキュリティ評価モジュール110と、ルールデータベース120と、操作開始モジュール130と、操作要求モジュール140と、インストールモジュール170と、実行モジュール172と、コンテンツを開くモジュール174と、を含む。図1にはまた、オペレーティングシステム100がセキュリティポリシーを評価する対象のアプリケーション150及びデータファイル160も示してある。セキュリティ評価モジュール110及びルールデータベース120は、アプリケーションプログラミングインターフェース(API)190を提供するセキュリティフレームワーク180の一部である。
オペレーティングシステム100は、コンピュータハードウェアリソースを管理すると共に様々なソフトウェアアプリケーションプログラムに対して共通サービスを提供する、一連のプログラムである。オペレーティングシステム100は、アプリケーションプログラムとコンピュータハードウェアとの間の橋渡し役として入力、出力、及びメモリ割り当てなどの機能を遂行する。幾つかの実施形態において、プログラムのアプリケーションコードはハードウェアを介して実行され、オペレーティングシステムから受け取った割り込み、又はオペレーティングシステムに対して行われた呼び出しを介してオペレーティングシステムと相互作用する。
アプリケーション150は、オペレーティングシステム上で稼動して機能を遂行する実行可能データオブジェクトである。アプリケーション150の例としては、ワードプロセッサ、ウェブブラウザ、ゲーム、メディア編集用アプリケーションなどが挙げられる。幾つかの実施形態において、アプリケーション150は、オペレーティングシステム100が実行されているコンピュータ上に1つ以上の実行可能プログラムをインストールするインストールプログラムである。
幾つかの実施形態において、アプリケーション150は、アプリケーションのユーザがアプリケーションの信頼性を判定できるように、ID署名を1つ以上埋め込む。アプリケーション150に埋め込まれた署名は、アプリケーションのソース、即ち発行元のセキュアなIDである。データオブジェクトの署名者にしか解らない秘密のプライベートキーを使用してデータオブジェクトのコンテンツに基づいて署名が生成されると、データオブジェクト(例えば、アプリケーション)が「署名」される。したがって、そのような署名によって、データオブジェクトの署名者又はソースを識別することも、データオブジェクトの完全性を保護することもできる。データオブジェクトの署名を認証するために、即ち、実際に署名がそうであると言われている(proported)ソース/署名者によってデータオブジェクトから生成されことを検証するために、データオブジェクト(即ち、オペレーティングシステム)の受領者では公開鍵を使用して、データオブジェクトのコンテンツと共に署名を認証する。公開鍵はそうであると言われているソース/署名者に由来するものであることは公知であり、さらに公開鍵が本当にそうであると言われているソース/署名者によって発行されていることは、(例えば、信頼済み認証局に問い合わせるか、又は受領者自身のデータベースをチェックすることによって)受領者が独立に検証できる。
幾つかの実施形態において、データオブジェクトの署名は、データオブジェクトに関連付けられている公開鍵証明書から抽出される。公開鍵証明書(別称:デジタル証明書又はID証明書)は、デジタル署名を使用して、人又は組織の名前、そのアドレスなどのようなID情報に公開鍵をバインドする電子文書である。証明書は、公開鍵が或る個人に帰属することを検証する目的に使用できる。証明書上の署名は、ID情報及び公開鍵が共に帰属することを証明書の署名者が認証したものである。アプリケーションデータオブジェクトのコンテンツ、及び証明書内の情報の両方に基づいて生成又は署名される署名は、認証されたときに、アプリケーションデータオブジェクトのコンテンツに改ざんがなく証明書内の情報が真正であることを証明する。証明書には、署名及びソース識別子(例えば、ベンダーID及び公開鍵)に加えて、署名の認証方法(例えば、署名の生成に用いられるアルゴリズムのID)に関する情報も含まれる。
図1の例では、オペレーティングシステム100によって署名認証の操作が実行されている。幾つかの実施形態において、オペレーティングシステム100は、アプリケーション150の署名の認証に失敗した場合、アプリケーション150の実行又はインストールを禁止する。幾つかの実施形態において、オペレーティングシステム100は、認証されたアプリケーションに対してさえも、セキュリティポリシーのセットに従ってアプリケーションの発行元が信頼できるものとして判定されなければ、そのアプリケーションの操作が続行されるのを禁止する。
データファイル160は、オペレーティングシステム内で実行できる1つ以上のアプリケーションに関連付けられたデータオブジェクトである。データファイル160の例としては、テキストファイル、ワードプロセッサ文書、スプレッドシート、メディアファイルなどが挙げられる。データファイル160は、データファイルを読み込み又は開くことができるアプリケーションによって、読み込まれ又は開かれる。幾つかの実施形態において、データファイル160には、署名又は証明書が含まれていない文書が含まれる。また、署名又は証明書にデータファイルを関連付けることができるように、データファイルをアーカイブ構造内に配置してもよい。幾つかの実施形態のセキュリティ評価モジュールが、データアーカイブ内のデータファイルを扱う仕組みを、下掲の図25及び26に示す。
インストールモジュール170は、アプリケーション150などのアプリケーションのインストールを監督する、オペレーティングシステム100内部のモジュールである。幾つかの実施形態において、インストールモジュール170は、操作開始モジュール130から「続行」コマンドが送られてくるのを待ってから、オペレーティングシステムを介してアプリケーション150のインストール処理を続行する。これらの実施形態の幾つかにおいて、セキュリティポリシーのセットに従ってアプリケーションの署名、及び一連の要件に対する適合性を検証する目的で、インストールモジュールはアプリケーションデータオブジェクト150をセキュリティ評価モジュール110に渡す。インストールモジュール170は、アプリケーション150の認証及びそのソースの検証が為されたことを示す情報を操作開始モジュール130から受け取った場合に限り、アプリケーション150のインストールを続行する。
実行モジュール172は、アプリケーション150などの、オペレーティングシステム100内で実行されるアプリケーションを起動する、オペレーティングシステム100内部のモジュールである。実行モジュール172はインストールモジュール170と同様に、幾つかの実施形態において、操作開始モジュール130からの「続行」コマンドを待ってから、オペレーティングシステム100を介してアプリケーション150を起動する。これらの実施形態の幾つかにおいて、実行モジュールは、セキュリティポリシーのセットに従ってアプリケーションの署名を検証し一連の要件を満たすために、アプリケーションデータオブジェクト150をセキュリティ評価モジュール110に渡す。アプリケーション150の認証及びそのソースの検証が為された後に、操作開始モジュール130から起動コマンドを受け取った場合に限り、実行モジュール172がアプリケーション150の実行を続行する。
コンテンツを開くモジュール174は、データファイル160が開かれるのを監督する、オペレーティングシステム100内部のモジュールである。幾つかの実施形態において、コンテンツを開くことは、データファイル160内のコンテンツに適したアプリケーションを識別してから、そのコンテンツをアプリケーションに渡す操作を伴う。前述したように、データファイルのコンテンツは、署名を伴う場合もあれば又は伴わない場合もあり、認証を必要とする場合もあれば又は必要としない場合もある。文書の認証が必要とされる場合は、セキュリティポリシーのセットに従って文書の署名を検証し一連の要件を満たす目的で、文書がセキュリティ評価モジュール110に渡される。コンテンツを開くモジュール174は、データファイル160の認証及びそのソースの検証が為された後に、操作開始モジュール130から起動コマンドを受け取った場合に限り、文書、即ちデータファイル160を開くことに進む。
幾つかの実施形態において、データファイル160を開くことは、アプリケーションの実行に関連付けられている。これらの実施形態の幾つかにおいて、コンテンツを開くモジュール174は最初に、データファイル160を開くためのアプリケーションを識別する。コンテンツを開くモジュール174によって識別されたアプリケーションがオペレーティングシステム内で既に実行されている場合、コンテンツを開くモジュールは、実行対象となる実行モジュール172にデータファイルを渡す。識別されたアプリケーションが現時点で実行されていない場合、コンテンツを開くモジュール174は、実行モジュール172にアプリケーションの実行を開始させる。アプリケーションの認証及びそのソースの検証が為されたことがオペレーティングシステム100によって判定された後ではじめて、識別されたアプリケーションの実行が為される。
操作要求モジュール140は、オペレーティングシステム100による特定の操作の実行を要求するモジュールである。そのような操作には、アプリケーションのインストール、アプリケーションの実行、文書を開くことなどが含まれ得る。幾つかの実施形態において、操作要求モジュール140は、(例えば、文書又はアプリケーションのグラフィカルアイコンを選択することによって)文書を開くための又は特定のアプリケーションを実行するためのユーザコマンドを受け取るユーザインターフェース(GUIなど)である。操作要求モジュール140はまた、オペレーティングシステム内で実行されていて、操作開始モジュール130に対して操作の実行を要求する別のプログラムである場合もある。幾つかの実施形態において、操作要求モジュール140はまた、オペレーティングシステム100のセキュリティポリシーによって操作の実行が許可されない場合(例えば、アプリケーション150の署名が認証に失敗したか、又はアプリケーション150のソースが信頼されていない場合)、操作開始モジュール130からの通知を受け取る。
操作開始モジュール130は、特定の操作が為されるのを許可するか又は禁止することによって、オペレーティングシステムのセキュリティポリシーを施行するモジュールである。操作開始モジュール130は、操作要求モジュール140から特定の操作に対する要求を受け取る。操作開始モジュール130は、要求に基づいて、必要なデータオブジェクト(例えば、アプリケーション150又はデータファイル160)を取得する。その後、操作開始モジュール130は、セキュリティ評価モジュール110に対し、オペレーティングシステム100のセキュリティポリシーの下で要求された操作を評価するように要求する。操作開始モジュールはまた、要求したセキュリティ評価操作の一環として、受け取ったデータオブジェクトをセキュリティ評価モジュールに渡す。
セキュリティ評価モジュール110は、或る操作がオペレーティングシステムのセキュリティポリシーに適合したものであるかどうかを判定するモジュールである。セキュリティ評価モジュール110は、操作開始モジュール130から、特定の操作に関するセキュリティポリシーの評価を要求するクエリを受け取る。セキュリティ評価モジュール110は、操作に関連付けられているデータオブジェクトを調べることによって、操作がセキュリティポリシーに適合したものであるかどうかを判定する。例えば、アプリケーション150をインストールする操作に基づく要求は、セキュリティ評価モジュールが調べる幾つかのデータオブジェクト(例えば、アプリケーション150用インストールパッケージのインストールファイル、及びインストールプログラム自体)を含み得る。別の例において、データファイル160をアプリケーション150で開く要求には、セキュリティ評価モジュール110によって検査されるアプリケーション150の実行可能プログラム及びデータファイル160の両方に対するデータオブジェクトが含まれ得る。幾つかの実施形態において、アプリケーション150及びデータファイル160は、セキュリティ評価の対象と言われるものである。続いて、セキュリティ評価モジュール110は、操作開始モジュール130から受け取るクエリに応答する。例えば、特定の操作がセキュリティポリシーの要件を満たしている場合、セキュリティ評価モジュールは操作開始モジュール130に対し、セキュリティポリシーの要件を満たしていることを通知する。他方、特定の操作がセキュリティポリシーの要件を満たしていない場合、セキュリティ評価モジュールは、操作開始モジュールに対し、特定の操作がセキュリティポリシーの要件を満たしていない旨の応答をする。
幾つかの実施形態において、セキュリティ評価モジュール110及びルールデータベース120は、オペレーティングシステム100のセキュリティ評価を遂行するセキュリティフレームワーク180の一部として実装される。オペレーティングシステムの他のコンポーネントは、セキュリティフレームワーク180によって提供されるセキュリティAPI190を使用して操作のセキュリティ評価を遂行できる。図1の例において、操作開始モジュール130は、API190を介してセキュリティ評価モジュール110と通信するオペレーティングシステム100のコンポーネントである。
一旦操作開始モジュール130がクエリに対する応答をセキュリティ評価モジュール110から受け取ると、操作開始モジュール130は、特定の操作の続行を許可するか又は許可しないようにする(例えば、禁止する)ことによって、セキュリティポリシーを施行する。操作の続行が許可された場合、操作開始モジュール130は、操作要求モジュール140によって要求された操作の実行をインストールモジュール170、実行モジュール172、又はコンテンツを開くモジュール174に開始させる。操作が許可されない場合、操作開始モジュール130はその旨を操作要求モジュール140に通知する。通知を受けた操作要求モジュール140は、今度はユーザに通知を行って、要求された操作を終了する。下の図2は、操作開始モジュール130によって実行されるプロセスの例を記述したものである。
データオブジェクト内に埋め込まれた署名は、その受領者によって認証されたときに、データオブジェクトが特定のソースに由来するものであることを検証する。幾つかの実施形態において、セキュリティ評価モジュール110は、データオブジェクト内の署名を認証し、データオブジェクトのソースを確認する。セキュリティ評価モジュールによって認証され得る署名を生成できない(例えば、欠陥があるか又は不完全な)データオブジェクトは、信頼できないソースに由来する可能性が高い。そのような状態において、セキュリティ評価モジュール110は、オペレーティングシステムのセキュリティポリシーの下で、データオブジェクトが実行されることのないよう又は開かれないように、操作開始モジュール130に対し通知する。(幾つかの実施形態においては、認証ができなかった署名付きの文書又はプログラムは、続行を許可されることはない。)その逆に、セキュリティ評価モジュール110がデータオブジェクトの署名を認証できる場合、セキュリティ評価モジュールは、セキュリティポリシーの下で他の要件も満たされる(例えば、データオブジェクトのソースが信頼できる場合など)とすれば、操作開始モジュールに対し、要求された操作を続行しても問題のない旨を通知し得る。
幾つかの実施形態によって実装されるセキュリティポリシーは、種々のデータオブジェクトを異なった様式で調べる。一部の種類のデータオブジェクトに関しては、オペレーティングシステムのセキュリティポリシーが、署名の認証のほかにも、満たされる必要のある更なる要件を有し得る。例えば、セキュリティポリシーが、一連の証明書に基づいて署名を認証することを義務付けている場合もあれば、又は(コード署名の認証が成功したとしても)データオブジェクトのソースが特定のベンダーであることを必須としている場合もある。幾つかの実施形態においては、セキュリティポリシーにユーザが変更を加えることができる。例えば、信頼済みコンピュータ管理者は、セキュリティ評価モジュールが任意の署名の検証又は認証を行うことなしに特定のデータオブジェクトを受け入れるようにオペレーティングシステムのセキュリティポリシーを変更することもできる。幾つかの実施形態において、セキュリティ評価モジュール110は、操作開始モジュール130によって提示される任意のデータオブジェクトに対して任意のセキュリティポリシーを実装するように、恣意的にプログラミングされ得る。
幾つかの実施形態において、データオブジェクトの評価に用いられるセキュリティポリシーは、データオブジェクトがセキュリティポリシーに適合しているかどうか判定するためにセキュリティ評価モジュール110が実行する命令のセットとして実装される。図1のオペレーティングシステムの例において、セキュリティポリシーを実装する命令セットはルールデータベース120内に格納されている。セキュリティ評価モジュール110は、ルールデータベース120から命令セットを取得し、取り出された命令を用いて、(i)データオブジェクトの分析し(例えば、データオブジェクトのソースが受け入れ可能なものかどうか判定するために)、及び(ii)分析に基づいて操作開始モジュール130に対し応答を発行する。ルールデータベース内に格納された1つ以上のルールからなる各セットは、時として「コード要件」と呼ばれる。この呼称は、データオブジェクト(例えば、アプリケーション150などの実行可能プログラムコード、又はデータファイル160)がオペレーティングシステムのセキュリティポリシーに適合する上で何が必要かをこのルールセットが指定していることに由来する。下の図3は、セキュリティ評価モジュール110によって実行されるプロセスの例を記述したものである。コード要件については、後ほど図9及び13を参照しながら、更に詳述する。
ルールデータベース120は、オペレーティングシステム100のセキュリティポリシーを実装するための命令のセットが格納されるデータベースである。セキュリティ評価モジュール110は、ルールデータベース120から命令のセットを取得し、それによって、操作開始モジュール130によって為されたセキュリティのクエリに応答する。ルールデータベースについては、後ほど図7〜図17を参照しながら、更に詳述する。
図2は、幾つかの実施形態のオペレーティングシステムが要求された操作の処理及び承認に用いるプロセス200を概念的に示したものである。具体的には、プロセスは要求された操作に関するセキュリティ評価を要求し、承認された操作を開始する。幾つかの実施形態において、プロセス200は、オペレーティングシステム100内のモジュール(例えば、図1の操作開始モジュール130)によって実行される。
(210において)(例えば、操作要求モジュール140から)操作要求を取得したときに、プロセス200は開始される。幾つかの実施形態において、この要求は、文書を開くための又はアプリケーションを実行するためのユーザコマンドである。また、現在実行しているアプリケーション、又はオペレーティングシステム内で特定の操作を実行するためのシステムプロセスによって、要求が促されることもある。
次いで、(220において)このプロセスによって要求がセキュリティ評価モジュールに渡される。図1の例においては、セキュリティ評価モジュールがセキュリティポリシーの下で要求のセキュリティを評価する際に必要とするデータオブジェクト(例えば、アプリケーション150又はデータファイル160)もまた、要求に含まれる。例えば、文書を開くためにユーザコマンドによって開始された操作要求では、場合によっては、文書を開くにはアプリケーションの呼び出しが必要になることから、複数のデータオブジェクトをセキュリティ評価モジュールに渡す必要のある場合があり、それ故、セキュリティ評価モジュールに渡された要求には、文書及びアプリケーションの両方のファイルハンドルが含まれることになる。
次いで、プロセスは(230において)セキュリティ評価モジュール(例えば、110)からの応答を受け取り、(240において)要求された操作を承認するかどうかを判定する。幾つかの実施形態において、セキュリティ評価モジュールからの応答は(例えば、操作開始モジュール130への通知によって)要求がオペレーティングシステムのセキュリティポリシーを通過したかどうかを示すものである。幾つかの実施形態において、要求がセキュリティ評価を通過した(例えば、認証済み署名を有し、かつ許容され得るソースに由来する)ことが応答により示された場合、プロセス200は、要求された操作を続行させる。幾つかの実施形態において、応答による指示がそれ以外の場合(例えば、セキュリティ評価モジュールが署名を認証できない場合、又はデータオブジェクトが許容され得るソースに由来するものでない場合)、プロセス200は要求された操作を終了するか又は保留にする。
要求が承認されると、(250において)プロセス200は、要求を受け取って承認済み操作の実行ができる操作ハンドラに要求を渡す。図1に示すように、幾つかの操作ハンドラは、要求を受け取って操作を実行できる。インストールモジュール170、実行モジュール172及びコンテンツを開くモジュール174などがこれに含まれる。操作ハンドラに要求が渡された後に、プロセス200が終了する。
他方、プロセス200は要求を不承認する場合、(260において)操作要求モジュール(例えば、図1の140)に既定のメッセージを返し、続いて、ユーザ(不図示)に対し通知を行う。更にまた、要求が承認されない場合、プロセス200は、その要求を操作ハンドラに渡さない。故に、要求が承認されない場合、操作ハンドラ(例えば170、172及び174)はいずれも、要求された操作を実行しない。操作要求モジュールに既定のメッセージが返された後、プロセス200が終了する。
幾つかの実施形態では、プロセス200のバリエーションが実行される。例えば、プロセス200の具体的な操作は、図と共に記載される厳密な順序で実行されるとは限らない。具体的な操作は、1つの連続した一連の操作で実行されなくてもよく、様々な具体的な操作が、異なる実施形態で実行されてもよい。
図3は、オペレーティングシステムのセキュリティポリシーに基づいて要求された操作のセキュリティ評価を遂行するためのプロセス300の例を概念的に示したものである。具体的には、プロセス300はルールデータベースを使用して、要求された操作に関するセキュリティ評価をプロセスが実行することを可能にするルールに対して要求をマッチさせる。幾つかの実施形態において、プロセス300はオペレーティングシステム内のモジュール、例えば、図1のセキュリティ評価モジュール110によって実行される。
(310において)操作開始モジュールから要求が受け取られると、プロセス300が開始される。要求された特定の操作に関するセキュリティ評価が必要とされることが、要求により示される。
次に、(320において)プロセスはルールデータベースに対しクエリを実行し、マッチするものを見つける。プロセス300は、要求とマッチするか又は要求に適用可能なルールのエントリがルールデータベース内にあるかどうかを調べる。要求とマッチしないルールは、要求のセキュリティ評価には使用できない。例えば、特定の名前の付いたアプリケーションをチェック対象とするルールは、別の名前のアプリケーションのチェックには使用できない。以下に更に説明するように、ルールデータベース内の複数のエントリが同時に要求とマッチする場合もあるが、その際、適用されるルールは最高優先度のルールだけに限られる。
続いて、(330において)マッチするルール又は適用可能なルールがルールデータベース内に見つかったかどうかが、プロセスによって判定される。プロセス300が少なくとも1つのマッチするルールを見つけた場合、プロセスは340に進む。それ以外の場合、プロセスは360に進む。
360において、プロセスは、要求に対して適用可能なルール又は命令が存在しないことを示す既定の応答を、操作開始モジュールに返す。幾つかの実施形態において、既定のセキュリティポリシーでは、マッチするルールがルールデータベース内に無い操作に対しては要求が承認されない。幾つかの実施形態において、既定のセキュリティポリシーでは、ルールデータベースによって特に禁止されていない要求が許可される。幾つかの実施形態において、既定ポリシーでは、オペレーティングシステムがユーザに通知を行う必要がある。既定の応答が返された後、プロセス300が終了する。
340において、プロセスは要求に関するセキュリティ評価を行う。幾つかの実施形態において、プロセスは、マッチするルール又は適用可能な命令セットを要求に関連付けられているデータオブジェクト(例えば、アプリケーション150及び/又はデータファイル160)に適用することによって、セキュリティ評価を行う。幾つかの実施形態では、マッチするルールセットが、セキュリティ評価モジュールにおいて実行可能プログラムとして実行される。幾つかの実施形態において、マッチするルールセットは、セキュリティ評価モジュールにデータオブジェクトのソース、データオブジェクトのID、及びデータオブジェクトの種類などの変数に基づいてセキュリティ評価を行わせる。
一旦セキュリティ評価が行われると、(350において)プロセスは、要求された操作の続行を許可すべきかどうかを判定するためにセキュリティ評価を操作開始モジュールに返す。セキュリティ評価を操作開始モジュールに返した後、プロセス300が終了する。
幾つかの実施形態は、プロセス300のバリエーションを実行する。例えば、プロセス300の特定の操作が、図と共に記載される厳密な順序で実行されるとは限らない。具体的な操作は、1つの連続した一連の操作で実行されなくてもよく、様々な具体的な操作が、異なる実施形態で実行されてもよい。
図4〜6は、セキュリティ評価モジュール及びルールデータベースを使用してセキュリティ評価を実行するときのオペレーティングシステム100内部のデータフローを示したものである。図1におけるように、図4〜6のオペレーティングシステム100は、セキュリティ評価モジュール110と、ルールデータベース120と、操作開始モジュール130と、操作要求モジュール140と、インストールモジュール170と、実行モジュール172と、コンテンツを開くモジュール174と、を含んで構成される。
図4は、要求された操作がアプリケーションのインストールを目的としたものである場合のオペレーティングシステム100内部のデータフローを示す。操作要求モジュール140が操作開始モジュール130に対しアプリケーションXをインストールするよう要求すると(操作‘1’)、操作要求モジュール140において操作データフローが開始する。この要求は、幾つかの実施形態において、アプリケーションXをインストールするためのユーザコマンドに基づくものである。ユーザコマンドは、ユーザインターフェースを介して受け取られ得る。
続いて、操作開始モジュール130は、セキュリティ評価モジュール110に対し、オペレーティングシステムのセキュリティポリシーの下でアプリケーションXのインストールに対するセキュリティを評価するよう要求を行う(操作‘2’)。幾つかの実施形態において、セキュリティ評価モジュール110に対するこの要求は、アプリケーションXをインストールする上で必要なデータオブジェクト(インストールファイル及びパッケージなど)へのハンドルを含む。
セキュリティ評価モジュール110は要求を受け取ると即座に、ルールデータベース120に対しクエリを実行し(操作‘3’)、セキュリティポリシーの下でインストール要求とマッチするルール又は命令を探す。ルールデータベースは、そのデータベース内でクエリとマッチするルール又は命令をセキュリティ評価モジュール110に提供する(操作‘4’)。セキュリティ評価モジュール110とルールデータベース120との間のこのクエリプロセスは、マッチするルールがルールデータベース内に見つかるまで、又はルールデータベース内に適用可能なルールが存在しないことが判定されるまで続行される。
一旦マッチするルールが見つかると、セキュリティ評価モジュール110は、アプリケーションXのインストールに関連するデータオブジェクトにマッチするルールを適用することによって、セキュリティ評価を実行する。幾つかの実施形態において、ルールは、データオブジェクトの処理、及びデータオブジェクトがオペレーティングシステムのセキュリティポリシーに適合しているどうかの判定を行うためのプログラム命令という形をとる。幾つかの実施形態において、データオブジェクトを処理することは、データオブジェクトの内部でアプリケーションXのインストールに関連する署名を検証することを含む。幾つかの実施形態において、セキュリティポリシーに対する適合性は、署名の認証が成功したかどうか、及び署名が信頼済みソースに由来するものかどうかに基づいて判定される。続いて、セキュリティ評価が操作開始モジュール130に返される(操作‘5’)。図4に示す例において、セキュリティ評価モジュールは、アプリケーションXをインストールしても問題のないことを示している。アプリケーションXのインストールに関連するデータオブジェクトが、ルールデータベース内に格納されているセキュリティポリシーに適合していることが判明したため、これがセキュリティ評価である。
アプリケーションXをインストールしても問題がないというセキュリティ評価を受け取った後、操作開始モジュール130は、インストールモジュール170に対し、インストーラを起動してコンピュータにアプリケーションXをインストールするように指示する。実行モジュール172及びコンテンツを開くモジュール174の周囲の点線は、それらの2つのモジュールがこの操作に関与していないことを示す。
図5は、インストール操作のデータフローを図示するのではなく、要求された操作がアプリケーションの実行(例えば、起動又は呼び出し)を目的としている場合のオペレーティングシステム100内部のデータフローを示していることを除けば、図5は図4とほぼ同じである。操作要求モジュール140が操作開始モジュール130に対し、アプリケーションXを実行するよう要求すると(操作‘1’)、操作要求モジュール140において操作データフローが開始する。この要求は、幾つかの実施形態において、アプリケーションXを実行するためのユーザコマンドである。ユーザコマンドは、ユーザインターフェースを介して受け取られ得る。
続いて、操作開始モジュール130は、セキュリティ評価モジュールに対し、オペレーティングシステムのセキュリティポリシーの下でアプリケーションXの実行に関するセキュリティを評価するよう要求を行う(操作‘2’)。幾つかの実施形態において、この要求は、アプリケーションXの実行可能マシンコードなどの、アプリケーションXの実行に必要なデータオブジェクトへのハンドルを含む。
セキュリティ評価モジュール110は、要求を受け取ると即座に、ルールデータベース120に対してクエリを実行し(操作‘3’)、セキュリティポリシーの下でアプリケーションを実行するための要求とマッチするルール又は命令を探す。ルールデータベースは、そのデータベース内のクエリの条件を満たすルール又は命令をセキュリティ評価モジュール110に提供する(操作‘4’)。セキュリティ評価モジュール110とルールデータベース120との間のこのクエリプロセスは、マッチするルールがルールデータベース内に見つかるまで、又はルールデータベース内に適用可能なルールが存在しないと判定されるまで続行される。
一旦マッチするルールが見つかると、セキュリティ評価モジュール110は、アプリケーションXを実行することに関連するデータオブジェクトにマッチするルールを適用することによって、セキュリティ評価を実行する。幾つかの実施形態において、ルールは、データオブジェクトの処理、及びデータオブジェクトがオペレーティングシステムのセキュリティポリシーに適合しているどうかの判定を行うためのプログラム命令という形をとる。幾つかの実施形態において、データオブジェクトを処理することは、データオブジェクトの内部でアプリケーションXを実行することに関連する署名を検証することを含む。幾つかの実施形態において、セキュリティポリシーに対する適合性は、署名の認証が成功したかどうか、及び署名が信頼済みソースに由来するものかどうかに基づいて判定される。続いて、セキュリティ評価が操作開始モジュール130に返される(操作‘5’)。図5に示す例において、セキュリティ評価モジュールは、アプリケーションXを実行しても問題のないことを示している。アプリケーションXを実行することに関連するデータオブジェクトが、ルールデータベース内に格納されているセキュリティポリシーに適合していることが判明したため、これがセキュリティ評価である。
アプリケーションXを実行しても問題がないというセキュリティ評価を受け取った後、操作開始モジュール130は、実行モジュール172に対し、アプリケーションXを起動するように指示する。インストールモジュール170及びコンテンツを開くモジュール174の周囲の点線は、それらの2つのモジュールがこの操作に関与していないことを示す。
図6のデータフローが、文書を開く要求に基づいていることを除けば、図6は先行する2つの図とほぼ同じである。操作要求モジュール140が操作開始モジュール130に対し、文書データファイルXを開くことを要求すると(操作‘1’)、操作要求モジュール140においてデータフローが開始する。この要求は、幾つかの実施形態において、データファイルXを開くためのユーザコマンドである。ユーザコマンドは、ユーザインターフェースを介して受け取られ得る。
続いて、操作開始モジュール130は、セキュリティ評価モジュールに対し、オペレーティングシステムのセキュリティポリシーの下でデータファイルXを開くことに対するセキュリティを評価するよう要求を行う(操作‘2’)。幾つかの実施形態において、この要求はデータファイルXへのハンドルを含む。データファイルXがアプリケーションYで開くべき文書である場合、幾つかの実施形態において、この要求はアプリケーションYの実行可能バイナリファイルへのハンドルも含む。この実例においては、文書X及びアプリケーションYの両方が、文書Xを開く上で必要なデータオブジェクトであると見なされる。したがって、これらのデータオブジェクトの両方に対してセキュリティ評価が実行される。一方、幾つかの実施形態において、データファイルXを開く際に必要なアプリケーションは、既に実行されている(故に、図5の例におけるように、セキュリティ評価を既に通過している)。それ故、要求の一部としてセキュリティ評価モジュールに渡されるのは、データファイルX用のハンドルだけである。
セキュリティ評価モジュール110は要求を受け取ると即座に、ルールデータベース120に対しクエリを実行し(操作‘3’)、セキュリティポリシーの下で文書を開く要求とマッチするルール又は命令を探す。ルールデータベースは、そのデータベース内のルール又は命令をセキュリティ評価モジュール110に提供する(操作‘4’)。セキュリティ評価モジュール110とルールデータベース120との間のこのクエリプロセスは、マッチするルールがルールデータベース内に見つかるまで、又はルールデータベース内に適用可能なルールが存在しないと判定されるまで続行される。
一旦マッチするルールが見つかると、セキュリティ評価モジュール110は、データファイルXを開くことに関連するデータオブジェクト(例えば、アプリケーションY)にマッチするルールを適用することによって、セキュリティ評価を実行する。幾つかの実施形態において、ルールは、データオブジェクトの処理、及びデータオブジェクトがオペレーティングシステムのセキュリティポリシーに適合しているどうかの判定を行うためのプログラム命令という形をとる。幾つかの実施形態において、データオブジェクトを処理することは、データオブジェクトの内部でデータファイルXを開くことに関連する署名を検証することを含む。幾つかの実施形態においては、署名の認証が成功したかどうか、及び署名が信頼済みソースに由来するものかどうかに基づいて判定が為される。続いて、セキュリティ評価が操作開始モジュール130に返される(操作‘5’)。図6に示す例において、セキュリティ評価モジュールは、データファイルXを開いても問題のないことを示している。データファイルXを開くことに関連するデータオブジェクト(例えば、データファイルX自体、及びアプリケーションY)が、ルールデータベース内に格納されているセキュリティポリシーに適合していることが判明したため、これがセキュリティ評価である。
データファイルXを開いても問題がないというセキュリティ評価を受け取った後、操作開始モジュール130は、コンテンツを開くモジュール174に対し、アプリケーションXを起動するように指示する。実行モジュール172及びインストールモジュール170の周囲の点線は、それらの2つのモジュールがこの操作に関与していないことを示す。幾つかの実施形態において、文書を開くためにコンピュータ内で現在実行されていないアプリケーションを実行する必要がある場合、操作開始モジュールはまた実行モジュール172の起動も行う。
II.ルールデータベース
上記の例において、要求された操作に関連付けられているデータオブジェクトは、オペレーティングシステムのセキュリティポリシーに従って評価される。これらのセキュリティポリシーは、ルールデータベース内に格納された様々なルール又は命令で具体化される。それ故、「オペレーティングシステムのセキュリティポリシー」は、オペレーティングシステム内で為される操作を制御するプログラミング可能なルールのセットであるが、オペレーティングシステム自体のプログラムの一部ではない。第II−C節で説明するように、これらの「オペレーティングシステムのセキュリティポリシー」は、コンピュータシステムのユーザ又はベンダーが変更を施すことができる。
幾つかの実施形態において、ルールデータベースは、ルールデータベースに対するクエリの実行を効率化するための様々なテーブルを具備する。そのような2つのテーブル(即ち、権限テーブル及びキャッシュテーブル)については後述する。
A.権限テーブル
幾つかの実施形態において、ルールデータベースは権限テーブルを具備する。そのような幾つかの実施形態においては、セキュリティ評価モジュールがオペレーティングシステム内で特定の操作の実行を許可するかどうかを判定するために取り出すルールが、権限テーブルに含まれる。権限テーブル内のルールには、データオブジェクト(例えば、プログラムコード、又は開く対象の文書)がコンピュータのセキュリティポリシーに適合するために何が必要かが指定される。それ故、これらのルールのうちの1つ以上のセットはそれぞれ、幾つかの実施形態において「コード要件」と呼ばれる。
コード要件には、主体の署名に使用される証明書に対して任意の条件(証明書の中のベンダーID及び/又は公開鍵が特定の信頼済みソースに帰属することを必要とするなど)を表明できる。また、コード要件には、これらのプログラムの不可欠な部分である構成辞書のエントリなどの、他のものが必要とされる場合もある。例えば、コード要件に「アドレス帳の使用を許可するエンタイトルメントが必要」の旨を記述してもよい(エンタイトルメントとは、プログラム内の内包物として何らかのものによって指定された構成辞書の1つである)。これは、その署名とは全く無関係である。
オペレーティングシステムのセキュリティポリシーを判定するためのルール又は命令を格納する権限テーブル700を、図7に概念的に示す。権限テーブル700にはエントリ又はレコードのセットが含まれており、各エントリ又はレコードには、コード要件を指定する1つ以上のルール又は命令のセットが格納されている。特定のセキュリティポリシーは、権限テーブル内の1つ以上のエントリで表すことができる。
図示するように、記憶装置710には権限テーブル700が格納されており、この権限テーブル700にはレコード721、722及び723をはじめとする幾つかのエントリ又はレコードが含まれている。レコードは、ポリシー731、732及び733をはじめとする幾つかのセキュリティポリシーを表す。各レコード又はエントリはまた、フィールドのセット741〜744も含んで構成されている。フィールド741〜743は「ルール1」〜「ルールn」とラベル付けされている。フィールド744は「アクション」とラベル付けされている。
レコードの各フィールドは、オペレーティングシステムのセキュリティ評価モジュールに対し、論理演算又は算術演算のセットを実行して論理演算又は算術演算のセットに従って決定を下すように指示する、ルール又は命令のセットである。例えば、レコード721のフィールド741内の‘X’はセキュリティ評価がアプリケーションに関するものかどうかを確認する演算セットであってよく、レコード721のフィールド742内の‘Y’は証明書の失効日を確認する演算セットであってもよく、レコード722のフィールド742の‘Z’はアプリケーションが信頼済みベンダー又はソースに由来するものであるかどうかを検証するルールであってもよく、他方、フィールド741内の‘W’は開かれる対象のファイルがインターネットからダウンロードされたファイルであるかどうかをチェックするルールであってもよい。必ずしもエントリの全てのフィールドが入力されている必要はない。例えば、エントリ723には、1つのルールフィールド(741)だけが入力されている。レコード723用のそのフィールド内の命令は、開くように要求された文書をインターネットからダウンロードするかどうかのチェックであり得る。
或るレコードの別々のフィールド内の命令のセットはそれぞれ共同で1つの判定を行う。この1つの判定を用いることによって、「アクション」フィールド744に記述されているアクションを行うべきかどうかを決定する。例えば、レコード722のアクションフィールド744内に「承認」と記載されているため、評価対象のデータオブジェクトが、X.509規格の下で検証された証明書を有し、かつ信頼済みベンダーに由来するアプリケーションであるときには、特定のアプリケーションを起動する要求がセキュリティ評価モジュールによって承認される。他方、エントリ723が「非承認」であるため、特定のコンテンツアイテムがインターネットからダウンロードされているときには、セキュリティ評価モジュールは、その特定のコンテンツアイテムを開く要求を不承認する。
セキュリティポリシーは、そのような命令又は要件の集まりで構成される。図7の例において、セキュリティポリシーA731はレコード721内のルール又は命令で構成され、セキュリティポリシーB732はレコード722内のルール又は命令で構成され、セキュリティポリシーC733はレコード723内のルール又は命令で構成される。幾つかの実施形態において、セキュリティポリシーは、権限テーブル内の2つ以上のレコードにまたがるルールの集まりである。そのような権限テーブルについては、後ほど図10を参照しながら更に説明する。
幾つかの実施形態において、ルールによっては、マッチング用のものもあれば検証用のものもある。マッチング用のルールは、特定のエントリがセキュリティ評価の要求に適用できるかどうかを判定するものである。検証用のルールは、要求がルールテーブルの特定のエントリ又はレコードによって具体化されるセキュリティポリシーに適合しているかどうかを判定するものである。例えば、特定のベンダーからのデータオブジェクトの種類を却下するルールは検証用のルールであり、それに対して、ルールの適用範囲をゲームアプリケーションだけに制限するルールはマッチング用のルールである。
幾つかの実施形態は、ルールフィールド及びアクション用のフィールドに加えて、その他のフィールドも含む。図8は、権限テーブル800を概念的に示したものである。権限テーブル800は、図7に図示されているルールフィールド及びアクションフィールドだけでなく追加のフィールドも含んでいることを除けば、権限テーブル700とほぼ同じである。権限テーブル800はまた幾つかのエントリ(821〜823)を有し、各エントリは幾つかのフィールド(840〜844)を有する。これらのフィールドには、ルールフィールド(841〜843)及びアクションフィールド(844)が包含される。一方、権限テーブル700とは異なり、権限テーブル800における各エントリはまた優先度フィールド840も具備する。
幾つかの実施形態の優先度フィールド840は、要求とマッチするルールを探すために、権限テーブル内のどのエントリを最初に調べるかを決定するものである。優先度フィールド内で、より高い優先度値のエントリを調べてから、より低い優先度値のエントリを調べる。図8に示すように、優先度フィールド840において、レコード822は優先度値が1.75であり、一方、レコード823は優先度値1.25である。したがって、レコード822がレコード823より前に検索され、一方、レコード821(優先度値2.70を有する)がレコード822及び823の両方より前に検索される。エントリの優先度は、他の方法で(例えば、整数を使用するか、リンクリストにおいて最高優先度のエントリから最低優先度のエントリまでを配列するか、又はエントリの優先度を基準にソートすることによって)表記してもよい。
与えられたいずれかのセキュリティ評価要求について、権限テーブル内の複数のエントリが要求とマッチすることがあり得る。一方、幾つかの実施形態において、マッチするエントリが見つかると、セキュリティ評価モジュールは権限テーブルの検索を中断する。例えば、マッチするものを複数有し得る検索において、セキュリティ評価モジュールは、最初のマッチするエントリ(即ち、最高優先度のマッチするエントリ)のみを使用する。したがって、優先度フィールドを使用すれば、マッチするエントリが複数存在する可能性が低くなり、マッチするエントリが1つだけセキュリティ評価に用いられることが保証される。
図7及び8の例において、権限テーブル内のエントリは、各々論理演算又は算術演算のセットを実行するための命令セットを格納する幾つかのルールフィールドを含む、幾つかのフィールドを備える。一方、一部の実施形態は、全てのルールフィールドの命令のセットを単一のルールとして表し、権限テーブル内に単一のルールフィールドのみを有する。権限テーブルのレコード内の単一のルールフィールドは、特定のセキュリティポリシーの下でセキュリティ評価を行うために必要とされる全ての命令を含む。
図9は、各レコード又はエントリ内に1つのルールフィールドのみを含む、他の幾つかの実施形態の権限テーブル900を概念的に図示している。権限テーブル900は、権限テーブル800と同様に、優先度フィールド941、アクションフィールド943、及び幾つかのエントリ(921〜923)を含む。一方、幾つかのルールフィールドを備える権限テーブル800とは異なり、権限テーブル900は1つだけルールフィールド942を備える。
各レコード又はエントリに対しルールフィールド942を含むコード要件は、要求に対しセキュリティ評価を実行する上で必要なマッチング用及び検証用の両方の命令を含む全ての命令を含む。幾つかの実施形態において、上述したように、コード要件は、1つ以上の連結されたルールのセットであり得る。そのような幾つかの実施形態においては、データオブジェクトのソースを検証するために、そのコード要件が要求されたデータオブジェクトに適用される。例えば、エントリ921用ルールフィールド942を含むコード要件における命令セットは、(1)セキュリティ評価の要求がアプリケーションに対するものかどうか、(2)アプリケーションが信頼済みベンダー又はソースに由来するかどうか、及び(3)証明書内のソースを識別する情報(例えば、ベンダーID、公開鍵など)が実際に信頼済みベンダー又はソースに帰属するかどうかをそれぞれ判定できる。3つの判定のそれぞれがその対応するルールの条件を満たす場合に限り、アクションフィールド943内のアクションが適用される。他方、3つの判定のうちの1つ以上がその対応するルールの条件を満たさない場合、レコードのアクションフィールドは適用されない。故に、アクションフィールドによって規定されたアクションは、レコード用の単一ルールに基づくもの(例えば、要求されたアクションの承認又は不承認)であり、セキュリティ評価モジュールに伝達される。
権限テーブルは、図7〜図10に示すものとは異なるフォーマットを有し得る。例えば、権限テーブルエントリは、幾つかの実施形態において、無効フィールドに或る値が含まれている場合にエントリをスキップすることができ、セキュリティ評価モジュールが検索中にエントリを考慮しない「無効化」と呼ばれるフィールドを含み得る。
上記で図7を参照しながら説明したように、オペレーティングシステムのセキュリティポリシーは、ルールデータベース内のルール及び命令で表される。幾つかの実施形態において、権限テーブル内の各エントリは、1つの特定のセキュリティポリシー(例えば、特定のベンダーからの有効な署名を有するアプリケーションのみを許可すること)を表すのに十分である。幾つかの実施形態において、セキュリティポリシーは、権限テーブル内の2つ以上のエントリで表すことができる。
図10は、複数のエントリを使用して単一のセキュリティポリシーを表す権限テーブル1000を示したものである。図10については、図11及び図12を参照しながら説明する。権限テーブル1000は、権限テーブル900と同様に、幾つかのエントリ(1021〜1027)を有し、各エントリは3つのフィールド(優先度フィールド1041、ルールフィールド1042、及びアクションフィールド1043)を有する。一方、図10にはまた、権限テーブルの3つのエントリ(エントリ1021、1024及び1026)で実装されるセキュリティポリシー1031の例(「セキュリティポリシー1」)も示してある。セキュリティポリシーの3つのエントリはそれぞれ優先度が異なり(P1、P5及びP8)、マッチング優先度が最高のエントリ1つだけが、セキュリティ評価に用いられる。この例において、P1は優先度が最も高く、P5は優先度がP1よりも低く、かつP8は優先度が最も低い。
図11は、図10のセキュリティポリシー1031の例を表す一連のベン図を示している。この線図は、3つの権限テーブルエントリ(P1、P5及びP8)間の論理的な関係を示している。この線図にはまた、優先度を用いたセキュリティポリシー1031の例の構造が、図示されている。
図11には、セキュリティポリシー1031、2次元のベン図1120、及び3次元線図1130も含まれている。セキュリティポリシー1031には、優先度P1用のレコード(又は命令セット)、優先度P5用のレコード、及び優先度P8用のレコードが含まれている。優先度P1のレコード(即ち、1021)内のルールは「有効な証明書を有する全てのX社製ワードプロセッシングアプリ」を許可する。優先度P5のレコード(即ち、1024)内のルールは「一切のX社製アプリを許可しない」。優先度P8のレコード(即ち、1026)内のルールは、全てのアプリケーションを開くことを許可する。幾つかの実施形態において、証明書はその署名が認証された場合、「有効」と見なされる。
2Dベン図1120は、3つの楕円形1121〜1123を含む。3D線図1130は、同じ3つの楕円形を3次元の様式で示したものである。楕円形1121は優先度P1のルールを表し、楕円形1122は優先度P5のルールを表し、楕円形1123は優先度P8のルールを表す。
このようにして、2Dベン図1120は、3つの権限テーブルエントリ同士の間の論理的な関係を示している。ベン図1120の内部において、楕円形1123は楕円形1122及び1121を包含し、楕円形1122は楕円形1121を包含する。これは、3つのレコード内のルール同士の間の論理的な関係に対応している。P1ルール「有効な証明書を有する全てのX社製ワードプロセッシングアプリ」の適用範囲はP5ルール「X社製アプリ」の適用範囲のサブセットであり、P5ルールの適用範囲はP8ルール「全てのアプリ」の適用範囲のサブセットである。
3D線図は、セキュリティ評価を行う際にセキュリティポリシー1031内のどのルールを適用すべきかを、権限テーブル内の優先度フィールドを使用することによって決定する仕組みを示したものである。図示するように、楕円形1121は最上位にあり、セキュリティポリシー1031における最高優先度のルール(P1)に対応している。楕円形1122は2番目に上位にあり、セキュリティポリシー1031において優先度が2番目に高いルール(P5)に対応している。楕円形1123は最下位にあり、セキュリティポリシー1031における最低優先度のルール(P8)に対応している。より高い優先度の楕円形とより低い優先度の楕円形が交差すると、より高い優先度の楕円形がより低い優先度の楕円形に影を投げかけるのと同じように、より高い優先度のルールとより低い優先度のルールが交差する場合は、より高い優先度のルールがより低い優先度のルールに優先する。より高い優先度のルールの適用範囲が有効になって、より低い優先度のルールの適用範囲に穴を開けている。
このようにして、セキュリティ評価を遂行する際、権限テーブル1000内の複数のエントリを使用して、論理的な矛盾なしにセキュリティポリシー1031を作成できる。権限テーブル内の様々なエントリを同じ要求に適用する際にどのルールを使用すべきかという問題は、優先度フィールドを使用して解決される。
図12は、別のセキュリティポリシー1231の例を表す一連のベン図を示したものである。この線図は、3つの権限テーブルエントリ(P1、P5及びP8)間の論理的な関係を示している。この線図にはまた、優先度を用いたセキュリティポリシー1231の例の構造を、図示してある。セキュリティポリシー1231における権限テーブルエントリは、セキュリティポリシー1031における権限テーブルエントリとは異なり、必ずしも相互にサブセットになるとは限らない。
図12は、セキュリティポリシー1231、2次元ベン図1220及び3次元線図1230を含む。セキュリティポリシー1231は、優先度P1用レコード(即ち、命令のセット)、優先度P5用レコード、及び優先度P8用レコードを含む。優先度P1のレコード内のルールは「有効な証明書を有する全てのワードプロセッシングアプリ」を許可する。優先度P5のレコード内のルールは「一切のX社製品を許可しない」。優先度P8のレコード内のルールは、有効な証明書を有する全てのアプリケーションを開くことを許可する。
ベン図1220は、3つの楕円形1221〜1223を含む。3D線図1230は、3つの同じ楕円形を3次元の様式で示したものである。楕円形1221は優先度P1のルールを表し、楕円形1222は優先度P5のルールを表し、楕円形1223は優先度P8のルールを表す。
このようにして、2Dベン図は3つの権限テーブルエントリ同士の間の論理的な関係を示している。ベン図1220内において、楕円形1223は楕円形1221を包含している一方、楕円形1222は楕円形1221及び1223の両方に重なっている。これは、3つのレコード内のルール同士の間の論理的な関係に対応している。具体的には、P1ルール「有効な証明書を有する全てのワードプロセッシングアプリ」の適用範囲は、P8ルール「有効な証明書を有する全てのアプリ」の適用範囲のサブセットである。P5ルール「一切のX社製品を許可しない」の適用範囲は、P1及びP8レコードのサブセットにもスーパーセットにもならずにP1及びP8レコードの両方に交差する。
3D線図1230は、セキュリティ評価を行う際にセキュリティポリシー1231内のどのルールを適用すべきかを、権限テーブル内の優先度フィールドを使用することによって決定する仕組みを示したものである。図示するように、楕円形1221は最上位にあり、セキュリティポリシー1231における最高優先度のルール(P1)に対応している。楕円形1222は2番目に上位にあり、セキュリティポリシー1231において優先度が2番目に高いルール(P5)に対応している。楕円形1223は最下位にあり、セキュリティポリシー1231において最低優先度のルール(P8)に対応している。より高い優先度の楕円形とより低い優先度の楕円形が交差すると、より高い優先度の楕円形がより低い優先度の楕円形に影を投げかけるのと同じように、より高い優先度のルールとより低い優先度のルールが交差するときは、より高い優先度のルールがより低い優先度のルールに優先する。
このようにして、セキュリティ評価を遂行する際に、権限テーブル内の複数のエントリを使用して、論理的な矛盾なしにセキュリティポリシー1231を作成できる。権限テーブル内の様々なエントリを同じ要求に適用する際にどのルールを使用すべきかという問題は、優先度フィールドを使用することによって解決される。例えば、有効な証明書を有するX社製のワードプロセッサに対する要求をすると、当該ワードプロセッサが承認される結果になる。これは、「有効な証明書を有する全てのワードプロセッシングアプリ」のルールの方が、「一切のX社製品を許可しない」よりも優先度が高いからである。別の例として、「一切のX社製品を許可しない」のルールの方が「有効な証明書を有する全てのアプリ」よりも優先度が高いため、有効な証明書を有するX社製ウェブブラウザアプリケーションに対する要求をしても承認されない。
一部の実施形態に関し、権限テーブルを使用してセキュリティ評価を実行するためのプロセス1300を、図13に概念的に示す。このプロセスは、セキュリティ評価要求を受け取り、権限テーブルのエントリ(又はレコード)を要求とマッチングさせる。次いで、プロセスは、権限テーブル内に格納されているコード要件に要求データオブジェクトが適合しているかどうかを検証することによってセキュリティ評価を遂行する。
(1310において)セキュリティ評価を行うクエリ又は要求を受け取ると、プロセス1300が開始する。この要求は、権限テーブル内に格納されているコード要件が適用されるデータオブジェクト(例えば、アプリケーションプログラムコード、インストールパッケージ、又は開く対象の文書)を伴う。
次いで、(1320において)プロセスはデータオブジェクトからコード署名を抽出する。幾つかの実施形態において、署名は、データオブジェクトのソースによって発行された公開鍵証明書から抽出される。続いて、(1325において)プロセスは、抽出された署名が認証されるかどうか判定する。幾つかの実施形態において、セキュリティ評価モジュールの中の別個のモジュールが、コード署名認証(例えば、コード署名検証モジュール)を実行する。一旦コード署名が抽出されると、プロセスはコード署名検証モジュールを使用して、コード署名が認証に成功したかどうかをチェックする。署名が認証に成功した場合、プロセスは1330に進む。署名が認証に失敗した場合、プロセス1300は終了する。
次に、(1330において)プロセスは権限テーブル内の最高優先度エントリを見つける。幾つかの実施形態において、プロセス1300は、権限テーブル内の各エントリの優先順位フィールドを比較することによって、どのエントリが最高優先度のものであるかを判定する。続いて、(1340において)プロセスはエントリが見つかったかどうかを判定する。幾つかの実施形態において、この判定は、どのエントリが既に調べ終えているかを記録することによって為される。権限テーブル内の全てのエントリを既に調べ終えた後、これ以上はエントリが見つからない。最高優先度のエントリが見つかった場合、プロセスは1350に進む。権限テーブル内に検査対象のエントリがこれ以上存在しない場合、プロセス1300は終了する。
1350において、プロセスは見つかった権限テーブルエントリからコード要件を取り出す。(1360において)プロセスは、取り出されたコード要件を使用して、データオブジェクトのソースを検証する。そのような検証には、ベンダーID、及び署名の生成に用いられる証明書の失効日の検証が含まれ得る。また、取り出されたコード要件は、データオブジェクトの他の必須の属性、即ち、データオブジェクトのタイプ、データオブジェクトの名前、又はデータオブジェクトに関連付けられている他の任意の属性などの属性の検証にも使用される。それ故、例えば、データオブジェクトからの署名をプロセスが認証できるとしても、コード要件が満たされなければ(例えば、データオブジェクトのタイプが適切でない場合、又は信頼できると見なされるソースに由来しない場合には)、依然としてデータオブジェクトがプロセスによって却下され得る。
その場合、(1370において)プロセスはコード要件がクエリにマッチしているか、即ちクエリに適用可能であるかを判定する。要求に適用できないコード要件に基づいてセキュリティ評価を行うことはできない。時として、プロセスがコード要件を使用して要求のデータオブジェクトを処理するまではコード要件の適用範囲を判定できないこともあるため、幾つかの実施形態では、プロセスのこの時点まではコード要件の適用範囲がチェックされない。幾つかの実施形態において、十分な情報が利用可能になると直ぐ、コード要件の適用範囲が、プロセスによってチェックされる。コード要件がクエリにマッチする(即ち、適用可能である)場合、プロセスは1390に進む。それ以外の場合、プロセスは1380に進む。
1380において、プロセスは権限テーブルを検索して、優先度が次に高いエントリを探す。幾つかの実施形態は、前に検査されたエントリのうち優先度が高いものをマーキングする。そうすれば、単にマーキングされていない最高優先度のエントリが、優先度が次に高いエントリである。次に、(1340において)プロセスはエントリが見つかるかどうかを判定する。その場合、プロセスは1350に戻る。それ以外の場合、プロセス1300が終了する。
1390において、プロセスはコード要件を使用して、操作開始モジュールが始めるべきアクションを判定する。幾つかの実施形態において、このアクションは、データオブジェクトがコード要件を満たしているかどうかに応じて、マッチしたエントリのアクション(即ち、承認又は不承認)フィールドで指定される。要求に応答した後、プロセス1300が終了する。
B.キャッシュテーブル
権限テーブル内のエントリを使用してセキュリティ評価を行うことは、幾つかの実施形態において、多くの計算を含み得る。証明書に埋め込まれた情報を検証するルールは、幾つかの実施形態において計算量の多い操作を含み得る。更にまた、要求にマッチするエントリの検索を完了するために、権限テーブル内の多くのエントリをまたがってトラバースする必要があり得る。例えば、要求にマッチするエントリが存在しないことを確認するために、権限テーブルを完全にトラバースする必要があり得る。幾つかの実施形態は、セキュリティ評価操作の実行対象を未評価のデータオブジェクトのみに限定することによって、セキュリティ評価時間を節約する。つまり、アプリケーションプログラムが初めて起動されたときにのみ、又はデータファイルが初めて開かれたときにのみ、権限テーブルに対してクエリが実行される。
セキュリティ評価操作を更に加速するため、幾つかの実施形態のルールデータベースは、権限テーブルのほかにキャッシュテーブルを組み込む。幾つかの実施形態において、キャッシュテーブルには、そのデータオブジェクトに一意なハッシュ値でインデックス付けされたアドレスロケーションに、データオブジェクトに必要なアクションが格納される。例えば、アプリケーションプログラム又はデータファイルに関して一意のコードディレクトリのハッシュ値を計算できる。故に、アプリケーションの実行(若しくはインストール)、又はアーカイブを開くことのセキュリティ評価に対する要求(下記第IV節で図24及び図25を参照しながら更に詳細に説明する)は、アプリケーション実行可能ファイル、インストールファイル又はアーカイブのハッシュ値の計算のみを必要とする。続いて、ハッシュのインデックス値が指し示すキャッシュテーブルのアドレスロケーションから、アクション(例えば、承認又は不承認)が取り出される。
権限テーブルに対するクエリとは異なり、キャッシュテーブルに対するクエリでは、ルールに従って複数のエントリをトラバースする必要もないし時間の掛かる計算も行う必要もない。故に、キャッシュテーブル内に対応するエントリを有するデータオブジェクトに関する操作の評価に対する要求は、大幅に加速できる。幾つかの実施形態において、セキュリティ評価の要求は、先にキャッシュテーブル内のマッチするエントリを見つけようと試みてから、権限テーブルを検索する。キャッシュテーブル内のエントリがそれぞれ1つのデータオブジェクト(例えば、アプリケーション実行可能ファイル又は文書)に対応することから、キャッシュテーブルはオブジェクトテーブルとも呼ばれる。ユーザは、最近相互作用したデータオブジェクト(よって、キャッシュテーブル内にエントリを有する)と相互作用する傾向があるため、キャッシュテーブルを使用すれば、セキュリティ評価の時間が著しく短縮される。
一部の実施形態に関し、権限テーブル1410及びキャッシュテーブル1460を含むルールデータベース1400を、図14に示す。この図にはまた、キャッシュテーブルのエントリの例、及びキャッシュテーブルエントリと権限テーブルエントリ間の関係も示してある。幾つかの実施形態において、権限テーブル及びキャッシュテーブルは、別々の物理的ストレージ内に格納される一方、他の実施形態においては、権限テーブル及びキャッシュテーブルが単一の物理的ストレージ内に格納される。
権限テーブル1410は、フォーマット及びコンテンツが図9の権限テーブル900と同様で、レコードエントリ1421〜1423、優先度フィールド1440、ルールフィールド1441、及びアクションフィールド1442を含む。
キャッシュテーブル1460は、3つのエントリ1471〜1473を有している。キャッシュテーブルのエントリは、権限テーブルのエントリとは異なり、ルールフィールドを有しない。一方、キャッシュテーブルは、ハッシュIDフィールド1491、有効期限フィールド1492、アクションフィールド1493及び参照フィールド1494などの他のフィールドを有する。
キャッシュテーブル1460のエントリ1471は、権限テーブル1410のエントリ1421とマッチするデータオブジェクト(データオブジェクトA)に基づく。キャッシュテーブル1460のエントリ1472は、権限テーブル1410のエントリ1422とマッチするデータオブジェクト(データオブジェクトB)に基づく。幾つかの実施形態においては、データオブジェクトA及びBに基づいてセキュリティ評価要求が行われたときに、これらのキャッシュテーブルエントリが作成される。エントリ1473は、権限テーブル1410内のいずれのエントリにもマッチしないデータオブジェクト(データオブジェクトC)に基づく。権限テーブル1410が、データオブジェクトCに関するセキュリティ評価要求のためのマッチするルールをもたらすことに失敗すると、キャッシュテーブル1460内にネガティブエントリ1473が作成される。結果として、そのようなネガティブエントリがキャッシュテーブル内に存在していることにより、長時間にわたる権限テーブル1410の網羅的な検索が起きないようになる。
キャッシュテーブルのネガティブエントリ1473は、権限テーブル1410内にマッチするエントリが無いオブジェクトから生成されるため、権限テーブルから一切のフィールドを継承しない。幾つかの実施形態において、ネガティブエントリには、これがネガティブエントリであること、及び権限テーブル1410内にそのデータオブジェクト用のマッチするエントリが存在しないことを示す表示が含まれる。そのような幾つかの実施形態において、権限テーブルには、通常は処理されないが、キャッシュテーブル内のネガティブエントリが参照するためのアンカーとしての役目を果たす「仮想」エントリが含まれる。つまり、一切のルールが適用されないことが判定された結果として作成されるキャッシュレコード(即ち、ネガティブエントリ)は、権限テーブル内に格納されている仮想的な「権限なし」ルール(即ち、仮想エントリ)を参照する。これは主としてデータ構造の整合性を確実にするために為されるもので、これらの実施形態の目に見える挙動には影響しない。
キャッシュテーブルエントリ内のアクションフィールド1493には、実際にデータオブジェクトに対して行われたアクションが記録される。このアクションは、権限テーブル1410内に格納されたマッチするルールの適用に基づき、データオブジェクトを承認又は不承認する。例えば、キャッシュテーブルのエントリ1472のアクションフィールドはオブジェクトBを「承認しない」ことを示す。これは、(権限テーブルエントリ1422内に格納された)オブジェクトBのマッチするルールがオブジェクトBをそのコード要件を満たしていないものとして評価したためオブジェクトBが承認されなかったことを示す。この場合、オブジェクトBに基づく次の要求でキャッシュテーブル内のこのエントリを取り出すことも承認されない。つまり、各キャッシュテーブルエントリのアクションフィールド1493には、そのエントリのデータオブジェクトのセキュリティ評価が格納される。
有効期限フィールド1492は、キャッシュエントリがいつ失効したかを示す。幾つかの実施形態において、データオブジェクト用のキャッシュテーブルエントリの有効期限は、そのデータオブジェクトのコンテンツによって決定される。幾つかの実施形態は、データオブジェクトの証明書の有効期限をキャッシュエントリの有効期限として使用する。署名が一連の証明書から導出されるデータオブジェクトに関しては、最も早く失効する証明書の有効期限が、これらの幾つかの実施形態で使用される。幾つかの実施形態において、有効期限は、権限テーブル内のルールによって決定され、キャッシュテーブルのエントリが作成されたときに、キャッシュテーブル内に挿入される。幾つかの実施形態において、オペレーティングシステムは、データオブジェクト証明書以外の情報に基づいて有効期限を独自に指定する。幾つかの実施形態においてそのような情報は、ベンダー提供の既定値、要求された操作の種類、又はオペレーティングシステムに利用可能な他の何らかの情報であり得る。
幾つかの実施形態において、セキュリティ評価モジュールは、キャッシュテーブルエントリを適用する前に、そのエントリの有効期限フィールドをチェックする。有効期限を基準に失効したキャッシュテーブルエントリは、セキュリティ評価モジュールにより無視される(そしてキャッシュミスとして扱われる)。これにより、セキュリティ評価モジュールが、キャッシュテーブル1460内で現在用いられていないエントリに基づいて、誤ったセキュリティ評価を行わずに済むようになる。幾つかの実施形態において、失効済みキャッシュテーブルエントリは、アクセスされたときにパージされる。幾つかの実施形態は、キャッシュテーブルに失効済みエントリがないかどうかを定期的にチェックして、失効済みエントリがあるときはテーブルから除去するパージメカニズムを備える。
ハッシュIDフィールド1491には、ハッシュ値が格納される。幾つかの実施形態において、キャッシュテーブルエントリのハッシュIDフィールドには、キャッシュテーブルエントリのデータオブジェクトのハッシュに関連付けられた値が格納される。他の幾つかの実施形態は、このフィールドをキャッシュテーブル内に含まない。
幾つかの実施形態において、参照フィールド1494には、権限テーブル内のエントリへのリンクが格納される。具体的には、各キャッシュテーブルエントリの参照フィールド1494には、キャッシュテーブルエントリの生成に使用される、権限テーブル内のエントリへのリンクが格納される(即ち、その権限テーブルエントリのルールは、キャッシュテーブルエントリに関連付けられたデータオブジェクトのセキュリティ評価の遂行に使用される)。例えば、キャッシュテーブルエントリ1471の参照フィールドには、キャッシュテーブルエントリ1471が権限テーブルエントリ1421から生成されることが示され、キャッシュテーブルエントリ1472の参照フィールドには、キャッシュテーブルエントリ1472が権限テーブルエントリ1422から生成されることが示される。
幾つかの実施形態は、キャッシュテーブル内の参照フィールドを使用して、権限テーブルが変更されたために無効になったエントリのキャッシュテーブルをパージする。幾つかの実施形態において、キャッシュテーブルにはまた、権限テーブルから継承される優先度フィールドも含まれる(不図示)。幾つかの実施形態は、キャッシュテーブル内の優先度フィールドを使用して、権限テーブルが変更されたために無効になったエントリのキャッシュテーブルをパージする。キャッシュテーブルエントリのパージについては、下記の第II−C節で、図18を参照しながら更に説明する。
幾つかの実施形態において、キャッシュテーブル1460には、他のフィールドも含まれる。これらのキャッシュテーブルフィールドの幾つかのコンテンツは、キャッシュテーブルエントリの作成に使用される権限テーブルエントリから継承される。幾つかの実施形態において、キャッシュテーブル内のエントリ同士は必ずしも隣接するとは限らない。それらエントリのアドレスは、そのエントリの生成に用いられるデータオブジェクトのハッシュ値で決定されるからである。幾つかの実施形態において、データオブジェクトのハッシュ値は、データオブジェクトに対してハッシュ操作を実行することによって生成される。幾つかの実施形態において、ハッシュ操作は、他の任意のデータオブジェクトから一意にデータオブジェクトを識別するハッシュ値を生成する。幾つかの実施形態において、ハッシュ操作は、増分ハッシュ操作を含む。増分ハッシュ操作の説明は、本明細書において参照により援用されている、例えば、米国特許第7,103,779号に見出すことができる。
幾つかの実施形態において、ハッシュ操作は、コードディレクトリのハッシュ操作を含む。幾つかの実施形態において、コードディレクトリのハッシュは、キャッシュテーブル内の全ての一意のエントリを参照する一意の値である。故に、その対応するコード要件を有する各データオブジェクトは、一意のコードディレクトリハッシュにより、キャッシュテーブル内で一意に識別される。コードディレクトリのハッシュ及びその機能の説明は、本明細書において参照により援用される、米国特許出願公開第2008/0168553号に見出すことができる。
図14の例において、オブジェクトAのエントリ(1471)はオブジェクトAのハッシュ値でインデックス付けされている場所に格納され、オブジェクトBのエントリ(1472)はオブジェクトBのハッシュ値でインデックス付けされている場所に格納され、オブジェクトCのエントリ(1473)はオブジェクトCのハッシュ値でインデックス付けされている場所に格納される。
一部の実施形態に関し、操作開始モジュールからの要求に基づいてセキュリティ評価の目的に権限テーブル及びキャッシュテーブルの両方を使用するセキュリティ評価モジュール1500を、図15に示す。図示するように、セキュリティ評価モジュール1500は、操作開始モジュール1505からの要求を受け取り、権限テーブル1510及びキャッシュテーブル1515の両方に対してクエリを実行する。セキュリティ評価モジュール1500は、権限テーブルに対してクエリを実行するクエリマネージャ1520と、キャッシュテーブルに対してクエリを実行するクエリマネージャ1525と、を具備する。セキュリティ評価モジュール1500はまた、プロセッサ1530と、キャッシュテーブルレコードジェネレータ1540と、を具備する。権限テーブル1510に対してクエリを実行するクエリマネージャ1520はまた、ルールエンジン1550と、レコード選択モジュール1560と、署名検証モジュール1570とを含む。
操作開始モジュール1505は、セキュリティ評価要求を行い、セキュリティ評価の結果が、セキュリティ評価モジュールのプロセッサ1530から来るのを待つ。プロセッサ1530は、操作開始モジュール1505からのセキュリティ評価要求を受け取る。プロセッサは、この受け取ったセキュリティ評価要求に基づいて、セキュリティ評価要求を承認するかどうかを判定するために、クエリマネージャ1520(権限テーブル用)及び1525(キャッシュテーブル用)の両方と通信する。また、プロセッサは、キャッシュテーブル1515内にキャッシュミスがあるときには、キャッシュテーブルレコードジェネレータ1540を使用して、新規のキャッシュエントリを生成する。また、キャッシュテーブルレコードジェネレータは、要求の対象であるデータオブジェクト(即ち、プログラムコード又は文書)をハッシュすることによって、キャッシュテーブル1515の物理メモリへのアドレスを生成する際にも使用される。
キャッシュテーブルに対してクエリを実行するためのクエリマネージャ1525は、プロセッサ1530と、キャッシュテーブル1515を格納する物理メモリとの間のインターフェースを提供する。権限テーブルに対してクエリを実行するためのクエリマネージャ1520は、プロセッサ1530と、権限テーブル1510を格納する物理メモリとの間のインターフェースを提供する。また、クエリマネージャ1520は、レコード選択モジュール1560を使用して、権限テーブル1510からエントリを選択して取り出す。続いて、取り出されたエントリは、ルールエンジン1550に中継され、解析され実行される。幾つかの実施形態において、クエリマネージャ1520は署名検証モジュール1570を使用して、データオブジェクトのコード署名を検証する。そのような幾つかの実施形態において、何らかの原因でコード署名が正しく認証できない場合、セキュリティ評価モジュール1500は、操作開始モジュール1505に不承認メッセージを返す。幾つかの実施形態において、ルールエンジン1550、レコード選択モジュール1560及び署名検証モジュール1570の機能が、クエリマネージャ1520でなくプロセッサ1530によって実行される。
署名検証モジュール1570は、データオブジェクトのコード署名を認証する。幾つかの実施形態において、署名検証モジュールは、データオブジェクト自体のコンテンツだけでなく公開鍵証明書の情報も使用して署名を認証する。署名検証モジュールは、証明書により識別された署名認証アルゴリズムに従って署名認証操作を実行する。署名認証プロセスを完了すると直ぐ、署名検証モジュールは、データオブジェクトの署名の認証が成功したかどうかをセキュリティ評価モジュール1500に通知する。
図16は、セキュリティ評価モジュール1600によるデータオブジェクト用キャッシュテーブルエントリの生成及び格納を示している。具体的には、図はデータオブジェクトに基づいてセキュリティ評価モジュールに対して要求が行われたときの、キャッシュテーブルエントリ内の様々なフィールドの生成を示したものである。図16は、権限テーブル1605、キャッシュテーブル1610、及びセキュリティ評価モジュール1600に対しデータオブジェクト1625に関する要求を行う操作開始モジュール1620を示したものである。キャッシュテーブルは、エントリ1611〜1613を有する。
セキュリティ評価モジュール1600は、権限テーブル用クエリマネージャ1630と、ハッシュモジュール1650と、メモリインターフェース1660と、有効期限抽出モジュール1670と、を具備する。一部の実施形態に関しては、クエリマネージャ1630が、図15のクエリマネージャ1520に類似している。ハッシュモジュール1650、及び有効期限抽出モジュール1670の機能は、図15のプロセッサ1530に類似のプロセッサによって実行される。セキュリティ評価モジュール1600はまた、署名検証モジュールなどの他のモジュールを具備するが、図を簡略化する目的で示していない。
操作開始モジュール1620は、セキュリティ評価モジュール1600に対し、データオブジェクト1625(‘データオブジェクトX’)の使用を必要とする操作に関するセキュリティ評価の要求を行う。データオブジェクト1625は、クエリマネージャ1630、ハッシュモジュール1650、及び有効期限抽出モジュール1670を含む、セキュリティ評価モジュール1600内の幾つかのモジュールに中継される。クエリマネージャ1630は、権限テーブル1605からデータオブジェクト1625とマッチするエントリを見つける。その後、クエリマネージャはマッチするエントリのルールを適用して、データオブジェクト1625に適切なアクションを決定する。クエリマネージャによって決定されたこのアクションが、新規のキャッシュテーブルエントリ1612用のアクションフィールド1642を形成する。
ハッシュモジュール1650はデータオブジェクト1625を受け取り、受け取ったデータオブジェクトに対してハッシュ操作を実行する。幾つかの実施形態において、ハッシュ操作は、増分ハッシュ操作である。ハッシュモジュール1650は、データオブジェクトX用に新規に作成されたキャッシュテーブルエントリのキャッシュテーブル内の場所を指定するためインデックス(‘X用のインデックス’)の役目を果たす一意のコードディレクトリのハッシュ値1655を生成する。続いて、メモリインターフェース1660は、この値をキャッシュテーブル用の物理アドレスとして使用する。幾つかの実施形態において、この一意に生成されたコードディレクトリのハッシュ値は、データオブジェクトX用のエントリ1612のハッシュIDフィールド内に格納される。
有効期限抽出モジュール1670はまたデータオブジェクト1625を受け取り、有効期限をデータオブジェクト1625から計算するか又は抽出する。幾つかの実施形態において、データオブジェクトの有効期限は、データオブジェクトの署名の作成に用いられる証明書によって指定される。データオブジェクトは、その署名を1つより多くの証明書、又は実に一連の証明書から導出する場合もある。幾つかの実施形態は、これらの証明書の最も早い有効期限を、キャッシュテーブルエントリの失効日として使用する。抽出された有効期限は、有効期限フィールド1675になる。幾つかの実施形態において、有効期限抽出モジュール1670は、有効期限を判定するための基準として他の情報を使用する。他の幾つかの実施形態において、有効期限フィールド1675は権限テーブルから継承され、有効期限抽出モジュール1670では計算されない。
アクションフィールド1642及び有効期限フィールド1675は一体に連結され、データオブジェクトX用のハッシュIDフィールド及び参照フィールドと供にデータオブジェクトX用の新規のキャッシュテーブルエントリ1612を形成する。キャッシュテーブル1610は、他の2つのオブジェクト用の他の2つのエントリ(データオブジェクトY用のエントリ1611及びオブジェクトZ用のエントリ1613)を有する。
幾つかの実施形態において、キャッシュテーブルのコンテンツは、同様なオペレーティングシステムを実行している別々のコンピュータによって共有され得る。コンピュータは、別のコンピュータによって生成されるキャッシュテーブル、又はオペレーティングシステムのベンダーによって供給される事前にパッケージングされたキャッシュテーブルをインポートできる。そのような事前入力済みキャッシュテーブルを使用するコンピュータは、それ自身のキャッシュエントリを生成する必要なしに、そのセキュリティ評価操作を直ちに加速できる。
一部の実施形態に関し、権限テーブルとキャッシュテーブルの両方をセキュリティ評価の実行に使用するプロセス1700を、図17に概念的に示す。このプロセスはまず、キャッシュテーブル内のマッチするエントリを見つけようと試みる。プロセスがキャッシュテーブル内でそのようなエントリを見つけることができない場合(即ち、キャッシュミス)、代わりに権限テーブルに対してクエリを実行してマッチするエントリを見つける。権限テーブルに対してクエリが実行されると、結果としてキャッシュテーブル内に新規のエントリが生成される。幾つかの実施形態において、このプロセスはオペレーティングシステムのセキュリティ評価モジュールによって実行される。
操作開始モジュールによって(例えば、アプリケーションの実行、アプリケーションのインストール、又は文書を開くなどの)操作が要求されたときに、プロセス1700が開始される。プロセスは、要求された操作に必要とされるデータオブジェクトと共に、この要求を(1710において)受け取る。
次いで、プロセスは(1720において)データオブジェクト用のハッシュ値(即ち、一意のコードディレクトリのハッシュ値)を判定する。幾つかの実施形態において、ハッシュ値は増分ハッシュ操作によって計算される。計算されたハッシュ値は、データオブジェクト用のキャッシュテーブル内にエントリを配置するためのインデックスの役目をする。次に、プロセスは(1730において)ハッシュ値を使用してキャッシュテーブルエントリを見つけることができるかどうかを判定する。この判定は、幾つかの実施形態において、ハッシュ値で指し示された場所に格納された有効なエントリが存在するかどうかに基づく。これらの実施形態の幾つかにおいて、各キャッシュテーブルエントリは、キャッシュテーブルエントリが有効かどうかを示すビットに関連付けられている。データオブジェクト用のキャッシュエントリが入力されていない場合、又はキャッシュテーブルエントリがパージ済みでかつ新規のキャッシュエントリが未入力の場合、キャッシュテーブルエントリは無効となる。プロセスがデータオブジェクトのハッシュ値を使用して有効なエントリを見つけることができる場合(キャッシュヒット)、プロセスは1740に進む。それ以外(キャッシュミス)の場合、プロセスは1750に進む。
1740において、プロセスは、マッチするキャッシュテーブルエントリのコンテンツに基づいてセキュリティ評価要求に対する応答を判定する。次いで、プロセスは(1780において)その応答が要求された操作の承認であるかどうかを判定する。応答によって操作が承認された場合、プロセスは1790に進み、ここで操作開始モジュールは要求を図1の実行モジュール172、インストールモジュール170又はコンテンツを開くモジュール174などの操作ハンドラに渡す。応答によって操作が承認されない場合、操作開始モジュールは要求を操作ハンドラに渡さないようにして、操作の続行を中止する。プロセス1700は、キャッシュテーブルエントリのコンテンツに基づいて操作開始モジュールに応答した後で、終了する。
キャッシュテーブルにおいてキャッシュミスが発生したため、1750において、プロセスは権限テーブルに対してクエリを実行する。幾つかの実施形態において、この操作は、図13のプロセス1300によって実行される。このプロセス1300は権限テーブルを検索して、要求にマッチするエントリを探す。
次に、プロセスは(1755において)権限テーブル内でマッチするエントリを見つけることができたかどうかを判定する。その場合、プロセスは1760に進む。それ以外の場合、プロセスは1770に進み、データオブジェクト用のネガティブキャッシュエントリを作成し、その後で終了する。上述したように、データオブジェクト用のネガティブキャッシュエントリによって、セキュリティ評価モジュールは、オペレーティングシステムのセキュリティポリシーが特定の要求に適用可能なルールを有していないことを即座に確認できる。
1760において、プロセスは権限テーブル内のマッチするエントリから応答を判定する。プロセスは、次いで(1765において)権限テーブル内のこのマッチするエントリに基づいて、キャッシュテーブル内に新規のエントリを作成する。続いて、プロセスは1780に進み、要求された操作を承認すべきかそれとも不承認すべきかを判定する。プロセス1700は、権限テーブルエントリのコンテンツに基づいて操作開始モジュールに応答した後で、終了する。
C.ユーザによるオーバーライド
幾つかの実施形態において、十分な特権を有するユーザは、権限テーブル内のエントリの追加、削除又は修正によってルールデータベースに変更を加えることを許可される。例えば、管理者特権を有するユーザは、特定のアプリケーションを実行するための署名認証をバイパスできる。ユーザは、より低い優先度のルールよりも優先されるより高い優先度のエントリを権限テーブルに追加し、それにより特定のアプリケーションの実行を許可することによって、このパイパスを行うことができる。
一方、上の図10に示すように、セキュリティポリシーは多くの場合、優先度を基準に一体にリンクされた幾つかのテーブルエントリを含む。したがって、セキュリティポリシーの下でデータオブジェクトを評価するためには、これらのテーブルエントリを優先度で示された順序で調べる必要がある。データオブジェクトに関して何らかのセキュリティ評価を行う際、より高い優先度のルールが適用できないときに限り、より低い優先度のルールが適用可能になる。故に、より高い優先度のルールに何らかの変更が加えられた場合、より低い優先度のルールの適用範囲が変わる可能性がある。
キャッシュテーブルには、権限テーブルが変更される前のルールの適用範囲を反映するキャッシュエントリが格納されているため、幾つかの実施形態においては、特定の優先度の権限テーブルが変更されると、キャッシュテーブル内のエントリのうち優先度が等しいか又はより低い全てのエントリをパージすることが、引き起こされる。例えば、新規の権限テーブルエントリの優先度値が2.3である場合、キャッシュテーブル内のエントリのうち優先度が2.3に等しいか又はより低い全てのエントリをパージすることが、引き起こされる。幾つかの実施形態において、このパージプロセスは、各キャッシュテーブルエントリ内の参照フィールド(例えば、図14の1494)を使用して、キャッシュテーブルエントリの作成に使用される権限テーブルエントリの優先度を把握する。他の幾つかの実施形態において、各キャッシュテーブルエントリには、この目的のため権限テーブルから継承される優先度フィールドが保持されている。
幾つかの実施形態において、ネガティブキャッシュエントリは、優先度が最も低いと想定される。ネガティブエントリは、権限テーブル内にマッチするエントリが無いデータオブジェクトのキャッシュテーブルエントリであるため、権限テーブルに何らかの変更が加えられた場合、ネガティブエントリのデータオブジェクトに影響が及ぶ可能性がある(即ち、権限が変更された場合、データオブジェクトが権限テーブル内にマッチするエントリを有するようになり、故に、ネガティブエントリが無効になる)。これらの実施形態の幾つかにおいて、権限テーブルに対する何らかの変更が加えられると、常にネガティブキャッシュエントリがパージされる。
一部の実施形態に関し、管理者ユーザがルールデータベースを変更した後にルールテーブルを保守管理するプロセスを、図18に概念的に示す。このプロセスでは、キャッシュテーブルからより低い優先度のエントリがパージされる。プロセス1800は、特権のあるユーザ(例えば、管理者)がルールデータベースに変更を加えたときに、開始される。このプロセスは(1810において)特権のあるユーザからルール変更を受け取り、(1820において)そのルールの変更が権限テーブル内に既に存在するルールに対するものかどうかを判定する。そのルールの変更が権限テーブル内に既に存在するルールに対するものである場合、プロセスは1840に進み、権限テーブルエントリを更新する。それ以外の場合、プロセスは1830に進み、権限テーブル内に新規のエントリを作成する。
次いで、プロセスは(1850において)新規に追加されたか又は更新されたルールよりも優先度の低いエントリがルールデータベース内にあるかどうかを判定する。エントリがある場合、プロセスは1860に進む。それ以外の場合、プロセス1800が終了する。
1860において、プロセスはキャッシュテーブル内の全てのより低い優先度のエントリを削除する。幾つかの実施形態において、プロセスは、キャッシュテーブル内にある全てのエントリを調べ、新規に追加されたか又は更新された権限テーブルエントリと優先度が等しいか又はより低い全てのエントリをパージする。全てのより低い優先度のキャッシュテーブルエントリ(任意のネガティブエントリを含む)が削除された後、プロセス1800が終了する。
III.ダウンロードされたコンテンツのセキュリティ評価
上記の実施形態の幾つかは、データオブジェクト内に埋め込まれている証明書を使用して、これらのデータオブジェクトに関するセキュリティ評価を行う。ほとんどの場合、これらの方法は、これらのデータオブジェクトのソースによって提供されたID(例えば、証明書内の署名及びベンダーID)に依存する。ただし、これらのソース提供のIDは、必ずしも常に利用可能であるとは限らない、又は信頼できるものであるとは限らない。それ故、セキュリティ評価を遂行する目的で、これらのソース提供の識別子に依存するのに加えて又はその代わりに、幾つかの実施形態のオペレーティングシステムは独自のIDをデータオブジェクト用に提供している。これらの実施形態の幾つかにおいて、オペレーティングシステムは、インターネット、USBフラッシュドライブ、又はデバイスの他の任意の周辺インターフェースなどの外部ソースからインポートされるデータオブジェクトにタグを関連付ける。タグには、データオブジェクトが外部ソースに由来するものであることを示す隔離ビットが含まれる。隔離ビットが存在する場合、データオブジェクトに対してシステムがセキュリティ評価を遂行していないことを更に示している。一旦オペレーティングシステムがデータオブジェクトに対しセキュリティ評価を遂行すると、タグが更新され(例えば、隔離ビットを除去することによって)、データオブジェクトがオペレーティングシステムのセキュリティポリシーの下で既に評価されたこと、及びデータオブジェクトがオペレーティングシステムのセキュリティポリシーを通過した(又は通過しなかった)ことを示す。
図19は、セキュリティ評価を実行するため自身の識別子を使用するオペレーティングシステムを具備するコンピュータ1900を概念的に示したものである。具体的には、コンピュータ1900のオペレーティングシステムは、例えば、インターネットからダウンロードされたコンテンツ及び/又はアプリケーションにタグ又は隔離ビットを追加する。コンピュータ1900は、記憶装置1910と、タグモジュール1920と、現在コンピュータ1900上で実行されているアプリケーション1930と、ネットワークインターフェース1940と、ユーザインターフェース(UI)モジュール1950と、を含む。UIモジュール1950は、入力デバイスドライバ1960及び表示モジュール1970を介してユーザとの通信を制御する。
ネットワークインターフェース1940は、ネットワークを介したコンピュータ1900と外界との間の通信インターフェースを提供する。ネットワークは、コンピュータ1900がインターネット1980経由で通信し、他のコンピュータからアプリケーションファイル1981〜1982及びコンテンツファイル1983〜1984などのデータオブジェクトにアクセスできるようにしている。これらのコンテンツファイルは、テキストファイル、ワードプロセッサ文書、スプレッドシート、メディアファイルなどであり得る。アプリケーションファイルはインストール及びプログラムファイルを挙げることができる。そして、これらのアプリケーション及びコンテンツファイルがコンピュータ1900にダウンロードできる。図に示されていないが、コンピュータ1900はまた、インターネット以外の外部ソース(外部フラッシュドライブなど)からも、データオブジェクトをダウンロードできる。
アプリケーション1930は、現在オペレーティングシステムを介してコンピュータ1900上で実行されているプログラム又はプロセスのセットである。アプリケーション1930は、インターネットブラウザ、ワードプロセッサ、ビデオゲーム、メディア編集アプリケーション、又はコンピュータ1900上で動作可能な任意のプログラムであり得る。アプリケーション1930は、ネットワークインターフェースを介してインターネット上のソースからデータオブジェクト1981〜1984をダウンロードすることを含む、インターネット経由での通信を必要とする操作を実行できる。一旦ファイルをダウンロードし終えると、アプリケーション1930は、ダウンロードされたファイルを記憶装置1910内に格納する。幾つかの実施形態においては、ダウンロードされたファイルは格納される前にタグモジュール1920を通過しなければならない。
タグモジュール1920は、各ダウンロードされたファイルをタグに関連付ける。幾つかの実施形態において、そのようなタグには、ダウンロードされたファイルが外部ソースに由来するものであり、かつオペレーティングシステムのセキュリティポリシーの下で検査されていないことを示す隔離ビットが含まれる。幾つかの実施形態においては、タグモジュールによって、ダウンロードされたファイルにタグが挿入されるか又は追加される。幾つかの実施形態において、タグモジュールは、どのファイルがインターネット又は他の外部ソースに由来するものであるかを記録するタグテーブルを保守管理する。コンピュータ上で実行されている他のプロセス又はモジュールは、タグテーブルにアクセスして、どのファイル又はデータオブジェクトがインターネットなどの外部ソースに由来するものであるとしてタグ付けされているかを確認できる。幾つかの実施形態では、外部ソースからのファイルへのタグ付けは、ファイルがアプリケーション1930によってダウンロードされると直ぐに、かつそのファイルが記憶装置1910内に格納される前に為される。
記憶装置1910には、コンピュータ1900用の様々なデータオブジェクトが格納される。これらのデータオブジェクトは、インターネット又は他の外部ソースからダウンロードされるコンテンツファイル及びアプリケーションファイルを含み得る。幾つかの実施形態において、これらのダウンロードされたアプリケーション及びコンテンツファイルは、タグモジュール1920によって供給されたタグに関連付けられる。
一旦ダウンロード済みファイルが格納されてタグ付けされると、オペレーティングシステムは、データオブジェクトがダウンロードされたかどうかを考慮するセキュリティポリシーに基づいてセキュリティ評価を遂行し得る。図20は、セキュリティ評価操作の際にタグ又は隔離ビットの存在チェックを必要とするオペレーティングシステム2000を示したものである。具体的には、オペレーティングシステム2000は、セキュリティ評価操作が実行される前に、データオブジェクトがタグ付けされているかどうかを識別するためのメカニズムを備える。セキュリティ評価操作は、上の第I節及び第II節に記載されているセキュリティ評価操作と類似している。
図示するように、オペレーティングシステム2000は操作要求モジュール2005と、セキュリティ評価モジュール2020と、ルールデータベース2030と、操作開始モジュール2010と、を含む。操作開始モジュールは、プロセッサ2040とタグ識別モジュール2050とを含む。オペレーティングシステムはまた、インストールモジュール2060及びコンテンツを開くモジュール2070も含む。
幾つかの実施形態において、オペレーティングシステム2000は、図1のオペレーティングシステム100と類似している。具体的には、操作要求モジュール2005は、操作要求モジュール140と同様に、操作開始モジュール130に対し操作の実行を要求する。インストールモジュール170及びコンテンツを開くモジュール174と同様に、インストールモジュール2060及びコンテンツを開くモジュール2070は、承認された要求を受け取って、承認された操作を実行する操作ハンドラである。
セキュリティ評価モジュール2020及びルールデータベース2030は、図1に示すセキュリティ評価モジュール110及びルールデータベース120と同様の操作を実行する。セキュリティ評価モジュール及びルールデータベースの機能についてはまた、上の第II節で図7〜17を参照しながら説明されている。例えば、幾つかの実施形態において、ルールデータベース2030は、権限テーブルとキャッシュテーブルの両方を含む。幾つかの実施形態において、セキュリティ評価モジュール2020は、ユーザ入力に基づいて、タグ付けされたオブジェクトのセキュリティ評価を遂行する。例えば、セキュリティ評価モジュール2020は、タグ付けされたオブジェクトをセキュリティ評価する要求を受け取ると即座に、要求された操作がダウンロード済みオブジェクトを含むことをユーザに通知し、リスクを承知の上で続行するかどうかをユーザに尋ねる。
操作開始モジュール2010は、操作開始モジュール130と同様に、特定操作の実行を許可するか又は禁止することにより、オペレーティングシステムのセキュリティポリシーを執行する。操作開始モジュール2010は操作要求モジュール2005から特定の操作要求を受け取り、要求された操作をオペレーティングシステム2000のセキュリティポリシーの下で評価するようにセキュリティ評価モジュール2020に要求する。一方、図1の操作開始モジュール130とは異なり、操作開始モジュール2010は、要求された操作に対するデータオブジェクトが、インターネット又は他の任意の外部ソースに由来するものとしてタグ付けされているかどうかをチェックする。外部ソースに由来するものとしてタグ付けされた(例えば、隔離ビットでタグ付けされた)データオブジェクトが、セキュリティ評価の対象となる。既に評価されたデータオブジェクトに対する反復的なセキュリティ評価を回避するため、幾つかの実施形態は、セキュリティ評価後にタグを更新し、既にデータオブジェクトの評価が済んでいることを示す。幾つかの実施形態では、隔離ビットを除去することによって、これを達成する。幾つかの実施形態において、更新済みタグはまた、データオブジェクトが以前のセキュリティ評価に通過したのか失敗したのかも示す。
図20の例において、操作開始モジュール2010内部のタグ識別モジュール2050は、タグをチェックしてプロセッサモジュール2040にレポートする。オペレーティングシステム2000において、セキュリティ評価モジュール2020は、タグに基づいてそのセキュリティ評価を行わない。タグを使用して、要求された操作の処理を続行すべきかどうかを決定するのは、操作開始モジュール2010内のプロセッサ2040である。これらの実施形態の幾つかにおいて、要求された操作に関連付けられているデータオブジェクトが外部ソースに由来するものであり評価されたことのないものとしてタグ付けされている場合にのみ、操作開始モジュール2010はセキュリティ評価の処理を続行する。データオブジェクトがそのようにタグ付けされていない場合(例えば、隔離ビットが除去された場合、又はデータオブジェクトが以前に評価を受けたものとして既にタグ付けされている場合)、操作開始モジュール2010は、セキュリティ評価を行うようにセキュリティ評価モジュールに要求しない。
図21〜22は、データオブジェクト内のタグを識別する操作開始モジュールを使用してセキュリティ評価を実行したときの、オペレーティングシステム2000内のデータフローを示したものである。図20におけるように、図21〜22のオペレーティングシステム2000は、セキュリティ評価モジュール2020と、ルールデータベース2030と、操作開始モジュール2010と、操作要求モジュール2005と、インストールモジュール2060と、コンテンツを開くモジュール2070と、を含む。
図21は、オペレーティングシステム2000内にアプリケーションをインストールする操作のデータフローを示したものである。操作開始モジュール2010に対しアプリケーションXをインストールするように要求が行われると(操作‘1’)、操作要求モジュール2005において操作が開始する。その後、プロセッサ2040はアプリケーションXがタグ付けされているかどうかを尋ねるコマンドをタグ識別モジュール2050に送信する(操作‘2’)。アプリケーションXが、外部ソースに由来するもの(例えば、隔離ビットを有する)としてタグ付けされている場合、タグ識別モジュール2050が確認をプロセッサ2040に送信する(操作‘3’)と、プロセッサはセキュリティ評価を遂行するようにセキュリティ評価モジュール2020に対し要求する(操作‘4’)。他方、アプリケーションXがタグ付けされていない場合、又はアプリケーションXが以前に評価された(又は隔離ビットが除去された)ものとしてタグ付けされている場合、プロセッサ2040は幾つかの実施形態において、セキュリティ評価モジュール2020に対し、セキュリティ評価を遂行するように要求しない。幾つかの実施形態において、アプリケーションXが、以前のセキュリティ評価に失敗したものとしてタグ付けされている場合、プロセッサ2040はセキュリティ評価モジュール2020を関与させることなしに、インストールプロセスを即座に終了し得る。その逆に、アプリケーションXが、以前のセキュリティ評価に通過したものとしてタグ付けされている場合、プロセッサ2040は幾つかの実施形態において、セキュリティ評価モジュール2020を関与させることなしに、アプリケーションXが処理を続行するのを即座に許可し得る。
セキュリティ評価要求が為された場合、セキュリティ評価モジュール2020はルールデータベース2030に対してクエリを実行する(操作‘5’)。ルールデータベース2030はそのデータベース内のルール又は命令をセキュリティ評価モジュール2020に供給する(操作‘6’)。セキュリティ評価モジュール2020とルールデータベース2030との間のこのクエリプロセスは、マッチするルールがルールデータベース内に見つかるまで、又は適用可能なルールがルールデータベース内に存在しないという判定が為されるまで、続行される。
一旦マッチするルールが見つかると、セキュリティ評価モジュール2020は、マッチするルールをアプリケーションXのインストールに関連するデータオブジェクトに適用する。その後、セキュリティ評価を操作開始モジュール2010に返す(操作‘7’)。図21の例において、セキュリティ評価モジュールから操作開始モジュールへの通信内容は、アプリケーションXのインストールに関連するデータオブジェクトが、ルールデータベース内に格納されているセキュリティポリシーに適合することが判明したため、アプリケーションXをインストールしても問題のないことを示している。
アプリケーションXが、セキュリティ評価モジュール2020によって遂行されたセキュリティ評価に通過したことを知ると即座に、プロセッサ2040は、アプリケーションXのインストールの処理を続行すべきかどうかを判定する。セキュリティ評価モジュールによって為されるセキュリティ評価に加えて、幾つかの実施形態において、プロセッサ2040はアプリケーションXがタグ付けされているかどうかを考慮する。プロセッサはアプリケーションXのインストールの処理を続行しても問題のないことを決定した場合、コマンドをインストールモジュール2060に送信し、アプリケーションXのインストールを起動する(操作‘8’)。コンテンツを開くモジュール2070の周囲にある点線は、このモジュールがこの操作に関与していないことを示す。
図22は、オペレーティングシステム2000において文書を開く操作のデータフロー図を示したものである。操作開始モジュール2010に対しデータファイルXを開くよう要求したとき(操作‘1’)に、操作要求モジュール2005において、操作が開始する。その後、プロセッサ2040は、データファイルXがタグ付けされているかどうかを尋ねるコマンドをタグ識別モジュール2050に送信する(操作‘2’)。データファイルXが外部ソースに由来する(例えば、隔離ビットを有する)ものとしてタグ付けされている場合、タグ識別モジュール2050は確認をプロセッサ2040に送信し(操作‘3’)、プロセッサはセキュリティ評価を行うようにセキュリティ評価モジュール2020に対し要求する(操作‘4’)。他方、データファイルXがタグ付けされていない場合、又はデータファイルXが、以前に評価されたものとしてタグ付けされている場合、幾つかの実施形態において、プロセッサ2040はセキュリティ評価モジュール2020に対しセキュリティ評価を遂行するよう要求しない。幾つかの実施形態において、データファイルXが、以前のセキュリティ評価に失敗したものとしてタグ付けされている場合、プロセッサ2040は、セキュリティ評価モジュール2020を関与させることなしに、ファイルを開くプロセスを直ちに終了できる。その逆に、データファイルXが、以前のセキュリティ評価に通過したものとしてタグ付けされている場合、幾つかの実施形態において、プロセッサ2040は、セキュリティ評価モジュール2040を関与させることなしに、データファイルを開くことの続行を直ちに許可できる。
セキュリティ評価要求が行われた場合、セキュリティ評価モジュール2020は続いて、ルールデータベース2030に対してクエリを実行する(操作‘5’)。ルールデータベース2030は、そのデータベース内のルール又は命令をセキュリティ評価モジュール2020に供給する(操作‘6’)。マッチするルールがルールデータベース内に見つかるまで、又は適用可能なルールがルールデータベース内に存在しないという判定が為されるまで、セキュリティ評価モジュール2020とルールデータベース2030との間のこのクエリプロセスが続行される。
一旦マッチするルールが見つかると、セキュリティ評価モジュール2020は、マッチするルールを、データファイルXを開くことに関連するデータオブジェクトに適用する。次いで、セキュリティ評価を操作開始モジュール2010に返す(操作‘7’)。図22の例において、データファイルXはルールデータベース内に格納されているセキュリティポリシーに適合することが判明しているため、セキュリティ評価モジュールから操作開始モジュールに返された通信は、データファイルXを開いても問題のないことを示す。
プロセッサ2040は、セキュリティ評価モジュール2020によって遂行されたセキュリティ評価をデータファイルXが通過したことを知ると即座に、データファイルXを開くことを続行すべきかどうかを判定する。セキュリティ評価モジュールによって為されたセキュリティ評価に加えて、幾つかの実施形態においてはまた、プロセッサ2040はデータファイルXがタグ付けされているかどうかを考慮する。プロセッサがデータファイルXを開くことに進んでも問題がないと判断した場合、プロセッサはコンテンツを開くモジュール2070にコマンドを送信して、データファイルXを開くことを開始する(操作‘8’)。インストールモジュール2060の周囲の点線は、この操作にインストールモジュール2060が関与していないことを示す。
図20〜22は、データオブジェクトがインターネットなどの外部ソースに由来するものであるとしてタグ付けされているかどうかを判定する操作開始モジュール2010を具備する、オペレーティングシステム2000を示している。オペレーティングシステム2000の操作開始モジュール2010はまた、操作を続行すべきかどうかをタグに基づいて判定する。ルールデータベース内に格納されているルールは、タグを考慮しないし処理もしない。一方、他の幾つかの実施形態において、オペレーティングシステムのルールデータベースには、タグを識別し、識別されたタグに基づいてセキュリティ評価を行うルールが含まれる。
一部の実施形態に関し、ダウンロードされたデータオブジェクトに関連付けられたタグを処理するためのルールを含むルールデータベースを具備するオペレーティングシステム2300を、図23に示す。そのような幾つかの実施形態において操作開始モジュールは、要求された操作に関連付けられたデータオブジェクトのタグをチェックしない。オペレーティングシステム2000と同様、オペレーティングシステム2300は、操作要求モジュール2305とセキュリティ評価モジュール2320とルールデータベース2330と操作開始モジュール2310とを含む。オペレーティングシステムはまた、インストールモジュール2360と、コンテンツを開くモジュール2370とを含む。
操作開始モジュール2310は、操作要求モジュール2305から操作の要求を受け取り、セキュリティ評価モジュール2320に対しセキュリティ評価の要求を行う。一方、操作開始モジュール2010とは異なり、操作開始モジュール2310は、ダウンロードタグのチェックを行わない。
セキュリティ評価モジュール2320は、操作開始モジュール2310からセキュリティ評価の要求を受け取り、ルールデータベースに対してクエリを実行し、各セキュリティ評価要求に関連付けられているデータオブジェクトにマッチするルールを探す。
ルールデータベース2330には、セキュリティ評価を遂行するためのルールが格納される。また、ルールデータベース2330は、ルールデータベース2030とは異なり、タグ付けされているかどうか確認する、データオブジェクトを分析するためのルールを含む。データオブジェクトがタグ付けされている場合、幾つかの実施形態は次に、データオブジェクトに対しセキュリティ評価を遂行し、要求された操作を承認/不承認するために、ルールデータベース内のルールを適用することに進む。第II節で先に述べたように、幾つかの実施形態において、ルールデータベース2330は、権限テーブル及びキャッシュテーブルの両方を含む。例えば、隔離ビットを有するために以前のセキュリティ評価で不承認されたデータオブジェクトは、データオブジェクトを不承認するアクションフィールドを備えるキャッシュエントリを有し得る。
IV.文書のセキュリティ評価
データオブジェクトのソースを識別するための署名は、部分的にはデータオブジェクトのコンテンツに基づいて導出されるため、データオブジェクトが改ざんされたかどうかを調べる目的に署名を使用できる。これはまた、コンテンツがユーザによってしばしば変更されるデータオブジェクト(例えば、文書)は、自身の署名を有し得ないことも意味する。一方、データファイルは署名を含む証明書を保持できる構造(例えば、アーカイブ)内に配置できる。そのような署名を使用することで、構造内のデータファイルのソースを安全に識別することができる。幾つかの実施形態において、オペレーティングシステムは、アーカイブ構造内に埋め込まれた証明書のIDに基づいて文書又はデータファイルを承認又は不承認するルールを、ルールデータベース内に含む。これらの実施形態の幾つかは、承認済みアーカイブ内の文書も同様に承認されるものと見なす。
図24は、証明書を有するデータアーカイブを受け取って格納するコンピュータ2400を示したものである。その後、コンピュータ2400のオペレーティングシステムで(署名付き)証明書を使用することによって、アーカイブ内のコンテンツのソースを安全に識別できる。図示するように、コンピュータ2400は、記憶装置2410と、コンピュータ2400上で現在実行されているアプリケーション2430と、ネットワークインターフェース2440と、ユーザインターフェース(UI)モジュール2450と、を含む。UIモジュール2450は、入力デバイスドライバ2460及び表示モジュール2470を介したユーザとの通信を制御する。
ネットワークインターフェース2440は、ネットワークを介したコンピュータ2400と外界との間の通信インターフェースを提供する。ネットワークを利用することによって、コンピュータ2400はインターネット経由で通信ができ、他のコンピュータからデータアーカイブ2481〜2484などのデータオブジェクトにアクセスできる。これらのアーカイブのコンテンツは、テキストファイル、ワードプロセッサ文書、スプレッドシート、メディアファイルなどであり得る。これらのアーカイブのコンテンツはまた、実行可能アプリケーション又はアプリケーションインストールファイルであり得る。これらのデータアーカイブの一部又は全部が、それらのソースを識別する署名付き証明書を有する。データアーカイブは、1個のコンテンツ(データアーカイブ2481など)又は複数個のコンテンツ又はファイル(データアーカイブ2484など)を含み得る。図には示してないが、コンピュータ2400はまた、外部フラッシュドライブなどの他のデータ通信手段を介して他のコンピュータからデータアーカイブにアクセスすることもできる。
アプリケーション2430は、オペレーティングシステムを介してコンピュータ2400上で現在実行されているプログラム又は一連のプロセスである。アプリケーション2430は、インターネットブラウザ、ワードプロセッサ、ビデオゲーム、メディア編集アプリケーション、又はコンピュータ2400上で動作可能な任意のプログラムであり得る。アプリケーション2430は、ネットワークインターフェース2440を介してインターネットからデータアーカイブ2481〜2484をダウンロードすることを含む、インターネットとの通信を必要とする操作を実行できる。
一旦データアーカイブがダウンロードされた後、このダウンロードされたファイルがアプリケーション2430によって記憶装置2410内に格納される。データアーカイブを記憶装置2410に格納する操作は、上で図19を参照しながら説明したように、タグ付き又は隔離データの格納操作と類似している。記憶装置2410にはデータアーカイブが格納される。一旦データアーカイブが格納された後は、署名を認証しデータアーカイブ内に埋め込まれた証明書を調べることによって、オペレーティングシステムはセキュリティ評価を遂行できる。
図25は、データアーカイブ内の証明書に基づいてデータファイル又は文書のセキュリティ評価を行うためのルールがルールデータベース内に含まれているオペレーティングシステムを示したものである。具体的には、図25は、オペレーティングシステム2500内でデータファイルを開くための要求の例を示している。データファイルはデータアーカイブ内に埋め込まれている。
オペレーティングシステム2500は、操作要求モジュール2505と、セキュリティ評価モジュール2520と、ルールデータベース2530と、操作開始モジュール2510と、コンテンツを開くモジュール2570と、を含んで構成される。オペレーティングシステム2500はまた、データアーカイブ2580を含む幾つかのデータアーカイブが格納されている記憶装置2560にアクセスできる。幾つかの実施形態において、記憶装置2560は、図24の記憶装置2410を具含む。記憶装置2410には、インターネット又は他の外部ソースからダウンロードされたデータアーカイブが格納される。
幾つかの実施形態において、オペレーティングシステム2500は、図1のオペレーティングシステム100に類似している。具体的には、操作要求モジュール2505は、操作要求モジュール140と同様、操作開始モジュール2510に対し操作の実行を要求する。操作開始モジュール2510は、操作要求モジュール2505から要求を受け取り、セキュリティ評価モジュール2520に対しセキュリティ評価を行うように要求する。図25で示される例において、要求はデータアーカイブ2580内に埋め込まれている文書又はデータファイルを開くことに対する要求である。操作開始モジュール2510は、データアーカイブ2580をセキュリティ評価モジュールに渡すことによって、セキュリティ評価モジュール2520に対し要求を行う。操作開始モジュール2510は、一旦セキュリティ評価モジュール2520からの応答を受け取ると、セキュリティ評価に基づいて、コンテンツを開くモジュール2570を起動するか又は要求された操作を終了する。
セキュリティ評価モジュール2520及びルールデータベース2530は、セキュリティ評価モジュール110及びルールデータベース120と同様の操作を実行する。上の第II節で図7〜17を参照しながら説明したように、幾つかの実施形態において、ルールデータベースは権限テーブル及びキャッシュテーブルの両方を有する。データファイル又は文書のソースを安全に識別するため、セキュリティ評価モジュール2520は、ルールデータベース2530内に格納されているルールを適用する前に署名を認証する。
コンテンツを開くモジュール2570は、図1のコンテンツを開くモジュール174に似ている。コンテンツを開くモジュール2570は、一旦操作開始モジュール2510から起動コマンドを受け取ると、要求されたデータファイルを開くことに進む。図25の例において、データアーカイブ2580内で開くように要求されたデータファイルは、記憶装置2560内に格納される。幾つかの実施形態において、データファイルを開くため、コンテンツを開くモジュール2570は、アーカイブ構造からデータファイルを抽出し、その後、(例えば、データファイルを開くために必要とされるアプリケーションにデータファイルを送信することによって)データファイルを開く。
一部の実施形態に関し、文書を開く操作のセキュリティ評価を実行するプロセス2600を、図26に概念的に示す。具体的には、プロセス2600は、データアーカイブに埋め込まれている署名付き証明書に基づいてセキュリティ評価の決定を行う目的でオペレーティングシステムによって実行される。
プロセス2600は、データファイル(又は文書)を開くための要求を受け取ったときに、開始される。(2610において)プロセスは、開くように要求された文書を受け取る。続いて、(2620において)プロセスは、文書が安全な種類のものかどうかを判定する。幾つかの実施形態において、コンピュータに危害を与える可能性の低い種類の文書又はファイルは、そのソースに関係なく、開くことを許可される。例えば、テキストファイルは安全であると見なされ、署名又は他のソースの識別を必要としない。文書が安全な種類であると見なされる場合、プロセスは2670に進み、文書を操作ハンドラ(図25のコンテンツを開くモジュール2570など)に渡す。文書が安全な種類であると見なされない場合、プロセスは2630に進む。幾つかの実施形態において、実行可能な文書は安全であると見なされない。幾つかの実施形態において、或る種類の非実行可能文書は、それらの文書を開いて使用するアプリケーションを介してコンピュータに危害を与える可能性のある悪質なコードを保持し得るため、そのような非実行可能文書に対するソース検証もまた必要になる。
次に、(2630において)プロセスは文書がアーカイブ内にあるかどうかを判定する。上述したように、データファイル又は文書によっては、ソースを識別する署名を有さないが、署名を保持するアーカイブ構造内にデータファイルを配置できるものもある。一方、幾つかの実施形態において、或る種の文書は、アーカイブに格納されずに、自身の署名を含み得る(例えば、滅多に変更されない文書は、そのファイルが改ざんされたかどうか検査する署名を保持し得る)。文書がアーカイブ内にない場合、プロセス2600は2650に進む。それ以外の場合、プロセスは2640に進み、それ自体で文書のセキュリティ評価を遂行する。
2640において、プロセスは文書自身の証明書に基づいて、セキュリティ評価を遂行する。操作は、文書の証明書内に埋め込まれている文書の署名の認証のほか、証明書内の他の情報に基づく追加のセキュリティ評価を含む。幾つかの実施形態において、プロセスはルールデータベースに対してクエリを実行し、文書に対しセキュリティ評価を行う際に使用できるマッチするルールを探す。この操作は、幾つかの実施形態において、文書にコード要件を適用することを含む。コード要件は、文書内に埋め込まれている証明書を調べ、かつソースが信頼できるものかどうかをチェックするための命令を含み得る。プロセスはセキュリティ評価の実行後に、(2660において)マッチするルールに基づいて、開く対象の文書を承認するかどうかを判定する。その場合、(2670において)プロセスは、操作ハンドラ(図25のコンテンツを開くモジュール2570など)に開くために文書を渡す。それ以外の場合、プロセスは終了する。
2650において、プロセスはアーカイブの証明書に基づいてセキュリティ評価を実行する。この操作は、アーカイブの証明書内に埋め込まれている署名の認証のほか、証明書内の他の情報に基づく追加のセキュリティ評価も含む。幾つかの実施形態において、プロセスはルールデータベースに対してクエリを実行し、アーカイブに対するセキュリティ評価を行う際に使用できるマッチするルールを探す。幾つかの実施形態において、この操作はコード要件をアーカイブに適用することを含む。コード要件は、アーカイブ内の証明書を調べてソースが信頼できるものかどうかをチェックする命令を含み得る。その後、プロセスは(2660において)マッチするルールに基づいて、アーカイブ、更にはアーカイブ内にある全ての文書を開くために承認するかどうかを判定する。その場合、プロセスは(2670において)文書を操作ハンドラ(図25のコンテンツを開くモジュール2570など)に開くために渡す。それ以外の場合、プロセスは終了する。
V.電子システム
前述の機能及びアプリケーションの多くは、コンピュータ可読記憶媒体(コンピュータ可読媒体とも呼ばれる)に記録される命令セットとして指定されるソフトウェアプロセスとして実現される。これらの命令が、1つ以上の計算又は処理ユニット(例えば、1つ以上のプロセッサ、プロセッサのコア、又は他の処理ユニット)によって実行されるとき、それらの命令は、処理ユニットに、命令に示されたアクションを実行させる。コンピュータ可読媒体の例には、CD−ROM、フラッシュドライブ、ランダムアクセスメモリ(RAM)チップ、ハードディスク、消去可能プログラム可能な読み出し専用メモリ(EPROM)、電気的消去可能プログラム可能な読み出し専用メモリ(EEPROM)などがあるが、これらに限定されない。コンピュータ可読媒体は、無線によって又は有線接続により進行する搬送波及び電子信号を含まない。
この明細書では、用語「ソフトウェア」は、プロセッサによって処理するためにメモリに読み込むことができる、読み出し専用メモリ内に存在するファームウェア又は磁気記憶装置に記憶されたアプリケーションを含む。また、幾つかの実施形態において、複数のソフトウェア発明は、別個のソフトウェア発明をそのままにしながら、より大きいプログラムの下位区分として実施されてもよい。幾つかの実施形態において、複数のソフトウェア発明を別個のプログラムとして実行することもできる。最後に、本明細書で述べたソフトウェア発明を一緒に実行する別個のプログラムの如何なる組み合わせも本発明の範囲内である。幾つかの実施形態において、ソフトウェアプログラムは、1つ以上の電子システム上で動作するようにインストールされたとき、ソフトウェアプログラムの動作を実行し行う1つ以上の特定のマシン実装を定義する。
図27は、本発明の幾つかの実施形態が実現される電子システム2700を概念的に示す。電子システム2700は、コンピュータ(例えば、デスクトップコンピュータ、パーソナルコンピュータ、タブレットコンピュータなど)、電話、PDA、又は他の種類の電子装置でよい。そのような電子システムは、様々なタイプのコンピュータ可読媒体、及び様々な他のタイプのコンピュータ可読媒体のためのインターフェースを含む。電子システム2700は、バス2705、処理ユニット2710、グラフィクス処理ユニット(GPU)2715、システムメモリ2720、ネットワーク2725、読み出し専用メモリ2730、永久記憶装置2735、入力装置2740及び出力装置2745を含む。
バス2705は、電子システム2700の多数の内部装置を通信可能に接続する全てのシステムバス、ペリフェラルバス及びチップセットバスを集合的に表す。例えば、バス2705は、処理ユニット2710を、読み出し専用メモリ2730、GPU2715、システムメモリ2720、及び永久記憶装置2735と通信可能に接続する。
これらの様々なメモリユニットから、処理ユニット2710は、本発明のプロセスを実行するために実行すべき命令及び処理すべきデータを検索する。処理ユニットは、異なる実施形態において、シングルプロセッサ又はマルチコアプロセッサでよい。幾つかの命令は、GPU2715に渡され、GPU2715によって実行される。GPU2715は、様々な計算をオフロードしたり、処理ユニット2710によって提供された画像処理を補完したりすることができる。幾つかの実施形態において、そのような機能は、CoreImageのカーネルのシェーディング言語を使用して提供されてもよい。
読み出し専用メモリ(ROM)2730は、処理ユニット2710及び電子システムの他のモジュールによって必要とされる静的データ及び命令を格納する。他方、永久記憶装置2735は、読み書きメモリ装置である。この装置は、電子システム2700がオフででも、命令及びデータを格納する不揮発性メモリユニットである。本発明の幾つかの実施形態は、永久記憶装置2735として大容量記憶装置(磁気又は光ディスク、及びその対応するディスクドライブなど)を使用する。
他の実施形態は、永久記憶装置としてリムーバブル記憶装置(フロッピディスク、フラッシュメモリデバイスなど、及びその対応するディスクドライブ)を使用する。永久記憶装置2735と同様に、システムメモリ2720は、読み書きメモリ装置である。しかしながら、記憶装置2735と異なり、システムメモリ2720は、ランダムアクセスメモリなどの揮発性読み書きメモリである。システムメモリ2720は、実行時間にプロセッサが必要とする命令及びデータのうちの幾つかを格納する。幾つかの実施形態において、本発明のプロセスは、システムメモリ2720、永久記憶装置2735、及び/又は読み出し専用メモリ2730に格納される。例えば、様々なメモリユニットは、幾つかの実施形態によれば、マルチメディアクリップを処理する命令を含む。これらの様々なメモリユニットから、処理ユニット2710はいつかの実施形態のプロセスを実行するために実行する命令及び処理するデータを取り出す。
バス2705は、また、入力装置2740及び出力装置2745に接続する。入力装置2740によって、ユーザは電子システムに情報を伝達しコマンドを選択することができる。入力装置2740には、英数字キーボード及びポインティングデバイス(「カーソル制御デバイス」とも呼ばれる)、カメラ(例えば、ウェブカメラ)、音声コマンドを受け取るマイクロフォン又は類似の装置などが挙げられる。出力装置2745は、電子システムによって生成された画像を表示するか、又はデータを他の方法で出力する。出力装置2745には、プリンタ、陰極線管(CRT)又は液晶ディスプレイ(LCD)などのディスプレイ装置、並びにスピーカ又は類似のオーディオ出力装置が挙げられる。幾つかの実施形態には、入力装置と出力装置との両方として機能するタッチスクリーンなどのデバイスを含む。
最後に、図27に示されたように、バス2705も、ネットワークアダプタ(図示せず)を介して電子システム2700をネットワーク2725に結合する。このように、コンピュータは、コンピュータのネットワークの一部(例えば、ローカルエリアネットワーク(「LAN」)、広域ネットワーク(「WAN」)、イントラネット、又はインターネットなどのネットワークのネットワーク)であり得る。電子システム2700のいずれか又は全てのコンポーネントが、本発明で使用されてもよい。
幾つかの実施形態は、マイクロプロセッサ、マシン可読又はコンピュータ可読媒体(あるいは、コンピュータ可読記憶媒体、マシン可読媒体又はマシン可読記憶媒体と呼ばれる)にコンピュータプログラム命令を記憶する記憶装置及びメモリなどの電子構成要素を含む。そのようなコンピュータ可読媒体の幾つかの例には、RAM、ROM、読み出し専用コンパクトディスク(CD−ROM)、追記型コンパクトディスク(CD−R)、書き換え可能コンパクトディスク(CD−RW)、読み出し専用多目的ディスク(例えば、DVD−ROM、2層DVD−ROM)、様々な記録可能/書き換え可能DVD(例えば、DVD−RAM、DVD−RW、DVD+RWなど)、フラッシュメモリ(例えば、SDカード、ミニSDカード、マイクロSDカードなど)、磁気及び/又はソリッドステートハードディスク、読み出し専用記録可能Blu−ray(登録商標)ディスク、超高密度光ディスク、任意の他の光学又は磁気メディア、及びフロッピディスクが挙げられる。コンピュータ可読媒体は、少なくとも1つの処理ユニットによって実行可能で、様々な操作を実行するための命令セットを含むコンピュータプログラムを格納してもよい。コンピュータプログラム又はコンピュータコードの例には、コンパイラによって作成されるようなマシンコード、及びインタープリタを使用してコンピュータ、電子構成要素又はマイクロプロセッサによって実行される高レベルコードを含むファイルが挙げられる。
上記の考察は、主に、ソフトウェアを実行するマイクロプロセッサ又はマルチコアプロセッサを参照しているが、幾つかの実施形態は、特定用途向け集積回路(ASIC)又はフィールドプログラマブルゲートアレイ(FPGA)などの1つ以上の集積回路によって実行される。幾つかの実施形態において、そのような集積回路は、回路自体に格納された命令を実行する。更に、幾つかの実施形態は、プログラマブルロジックデバイス(PLD)、ROM、又はRAMデバイスに格納されたソフトウェアを実行する。
本出願のこの明細書及びクレームで使用されるとき、用語「コンピュータ」、「サーバ」、「プロセッサ」及び「メモリ」は全て、電子又は他の技術装置を参照する。これらの用語は、人々又は人々のグループを含まない。規定のため、用語「ディスプレイ又は表示」は、電子システム上の表示を意味する。本出願のこの明細書及びクレームで使用されるとき、用語「コンピュータ可読媒体」、「コンピュータ可読媒体」、及び「マシン可読媒体」は、コンピュータによって読み出し可能な形式で情報を記憶する有形な物理的物体に完全に制限される。これらの用語は、無線信号、有線でダウンロードされた信号、及び他の暫時信号を除外する。
本発明を多数の特定の詳細に関して述べたが、当業者は、本発明を、本発明の趣旨から逸脱しない他の特定の形式で実施できることを理解するであろう。更に、少なくとも幾つかの図(図2、図3、図13、図17、図18及び図26を含む)は、プロセスを概念的に示す。これらのプロセスの具体的な操作は、図示され記述された厳密な順序で実行されなくてもよい。具体的な操作は、1つの連続した一連の操作で実行されなくてもよく、様々な具体的な操作が、異なる実施形態で実行されてもよい。更に、プロセスは、幾つかのサブプロセスを使用して、又はより大きいマクロプロセスの一部として実施されてもよい。したがって、当業者は、本発明が、以上の実例となる詳細によって制限されず、添付の特許請求の範囲によって定義されることを理解するであろう。