(57)【要約】コンピュータのセキュリティ技術について説明する。一例は、プログラム（例えば、ネイティブ実行可能ファイル、スクリプトなど）の実行を許可するかどうかを決定する。この決定は、プログラムが特権ソースによって提供されているかどうかなど、プログラムのソースに少なくとも部分的に基づく。特権プログラムソースは、ディレクトリまたはフォルダ（例えば、ローカルディスクまたはネットワークアクセス可能なストア）、コンピューティングデバイス（例えば、サーバコンピュータ）、別のプログラム（例えば、ウェブサーバ）など、実行可能命令を提供できる任意のモジュール、メカニズム、またはプロセスである。【選択図】図１Ａ
2022501727.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータセキュリティのための方法であって、
コンピューティングシステム上で実行することが許可されているプログラムを提供するようにそれぞれ指定されている１つまたは複数の特権ソースの表示を受信して、格納するステップと、
プログラムの表示を受信するステップと、
前記プログラムが前記１つまたは複数の特権ソースのうちの１つによって提供されるか否かを決定するステップと、
前記プログラムが前記特権ソースのいずれからも提供されていない場合、前記プログラムの実行を許可しないステップと、
を含む、方法。
【請求項２】
表示された前記プログラムがネットワークアクセス可能なソースによって提供される場合、前記ネットワークアクセス可能なソースが前記１つまたは複数の特権ソースのうちの１つであるかどうかを決定するステップと、
前記ネットワークアクセス可能なソースが前記１つまたは複数の特権ソースのいずれでもない場合、前記プログラムの実行を許可しないステップと、
をさらに含む、請求項１に記載の方法。
【請求項３】
前記コンピューティングシステムによって実行されることが許可されているプログラムのプロバイダとして、前記１つまたは複数の特権ソースによって識別される１つまたは複数のディレクトリの変更を許可しないステップをさらに含む、請求項１に記載の方法。
【請求項４】
前記プログラムの実行を前記許可しないステップは、前記プログラムを終了するステップ、前記プログラムを一時停止するステップ、および／または例外を発生させるステップを含む、請求項１に記載の方法。
【請求項５】
前記プログラムの実行を前記許可しないステップは、代替実行環境で前記プログラムを実行するステップを含む、請求項１に記載の方法。
【請求項６】
ファイルから前記１つまたは複数の特権ソースの前記表示を受信するステップと、
非特権ユーザによる前記ファイルの変更を許可しないステップと、
をさらに含む、請求項１に記載の方法。
【請求項７】
ウェブブラウザで前記プログラムの前記表示を受信するステップであって、前記プログラムがＪａｖａＳｃｒｉｐｔコードである、ステップと、
前記プログラムが前記特権ソースのうちの１つまたは複数であるサーバによって提供されているかどうかを決定するステップと、
をさらに含む、請求項１に記載の方法。
【請求項８】
前記プログラムが前記１つまたは複数の特権ソースのうちの１つによって提供されるか否かを決定するステップは、前記１つの特権ソースの識別子をホワイトリストの中で検索するステップを含む、請求項１に記載の方法。
【請求項９】
前記コンピューティングシステムへのプログラムのインストールを許可しないステップをさらに含む、請求項１に記載の方法。
【請求項１０】
表示された前記プログラムがネットワークアクセス可能なソースによって提供される場合、前記ネットワークアクセス可能なソースが前記１つまたは複数の特権ソースのうちの１つであるかどうかを決定するステップと、
前記ネットワークアクセス可能なソースが前記１つまたは複数の特権ソースのいずれでもない場合、前記プログラムの実行を許可しないステップと、
前記コンピューティングシステムによる実行が許可されているプログラムのプロバイダとして、前記１つまたは複数の特権ソースによって識別される１つまたは複数のディレクトリの変更を許可しないステップと、
ファイルから前記１つまたは複数の特権ソースの前記表示を受信するステップと、
非特権ユーザによる前記ファイルの変更を許可しないステップと、
前記コンピューティングシステムによって実行される仮想マシンである代替実行環境で前記プログラムを実行するステップと、
をさらに含む、請求項１に記載の方法。
【請求項１１】
実行されたときに、コンピューティングシステムにコンピュータセキュリティのための方法を実行させるように構成されたコンテンツを含む非一時的なコンピュータ可読媒体であって、前記方法は、
コンピューティングシステム上で実行することが許可されているプログラムを提供するようにそれぞれ指定されている１つまたは複数の特権ソースの表示を受信して、格納するステップと、
プログラムの表示を受信するステップと、
前記プログラムが前記１つまたは複数の特権ソースのうちの１つによって提供されるか否かを決定するステップと、
前記プログラムが前記特権ソースのいずれからも提供されていない場合、前記プログラムの実行を許可しないステップと、
を含む、非一時的なコンピュータ可読媒体。
【請求項１２】
前記方法が、
表示された前記プログラムがネットワークアクセス可能なソースによって提供される場合、前記ネットワークアクセス可能なソースが前記１つまたは複数の特権ソースのうちの１つであるかどうかを決定するステップと、
前記ネットワークアクセス可能なソースが前記１つまたは複数の特権ソースのいずれでもない場合、前記プログラムの実行を許可しないステップと、
前記コンピューティングシステムによる実行が許可されているプログラムのプロバイダとして、前記１つまたは複数の特権ソースによって識別される１つまたは複数のディレクトリの変更を許可しないステップと、
ファイルから前記１つまたは複数の特権ソースの前記表示を受信するステップと、
非特権ユーザによる前記ファイルの変更を許可しないステップと、
をさらに含む、請求項１１に記載の非一時的なコンピュータ可読媒体。
【請求項１３】
前記プログラムの実行を前記許可しないステップは、前記プログラムを終了するステップ、前記プログラムを一時停止するステップ、および／または例外を発生させるステップを含む、請求項１１に記載の非一時的なコンピュータ可読媒体。
【請求項１４】
前記プログラムの実行を前記許可しないステップは、前記コンピューティングシステムによって実行される仮想マシンである代替実行環境で前記プログラムを実行するステップを含む、請求項１１に記載の非一時的なコンピュータ可読媒体。
【請求項１５】
コンピュータセキュリティのためのコンピューティングシステムであって、
プロセッサと、
メモリと、
前記メモリに格納されたモジュールであって、プロセッサによって実行されると、
コンピューティングシステム上で実行することが許可されているプログラムを提供するようにそれぞれ指定されている１つまたは複数の特権ソースの表示を受信して、格納するステップと、
プログラムの表示を受信するステップと、
前記プログラムが前記１つまたは複数の特権ソースのうちの１つによって提供されるか否かを決定するステップと、
前記プログラムが前記特権ソースのいずれからも提供されていない場合、前記プログラムの実行を許可しないステップと、
を含む、方法を実行するように構成されたモジュールと、
を備える、コンピューティングシステム。
【請求項１６】
前記コンピューティングシステム上で実行される仮想マシンをさらに備え、前記方法が、
表示された前記プログラムがネットワークアクセス可能なソースによって提供される場合、前記ネットワークアクセス可能なソースが前記１つまたは複数の特権ソースのうちの１つであるかどうかを決定するステップと、
前記ネットワークアクセス可能なソースが前記１つまたは複数の特権ソースのいずれでもない場合、前記プログラムの実行を許可しないステップと、
前記コンピューティングシステムによる実行が許可されているプログラムのプロバイダとして、前記１つまたは複数の特権ソースによって識別される１つまたは複数のディレクトリの変更を許可しないステップと、
をさらに含み、
前記プログラムの実行を前記許可しないステップは、仮想マシンである代替実行環境で前記プログラムを実行するステップを含む、請求項１５に記載のコンピューティングシステム。
【請求項１７】
ウェブブラウザであって、
ウェブブラウザで前記プログラムの前記表示を受信することであって、前記プログラムがＪａｖａＳｃｒｉｐｔコードである、ことと、
前記プログラムが前記１つまたは複数の特権ソースであるサーバによって提供されているかどうかを決定することを、
行うように構成されている、ウェブブラウザを
さらに備える、請求項１５に記載のコンピューティングシステム。
【請求項１８】
前記プログラムが前記１つまたは複数の特権ソースのうちの１つによって提供されるか否かを、ホワイトリストの中で前記１つのソースの識別子を検索することによって、決定するように、前記ウェブブラウザが構成されている、請求項１７に記載のコンピューティングシステム。
【請求項１９】
前記ウェブブラウザは、前記プログラムが前記１つまたは複数の特権ソースのうちの１つによって提供されるかどうかを、前記１つの特権ソースとの通信に関連する１つまたは複数のプロパティであって、前記１つの特権ソースの地理的位置、通信時刻、および前記１つの特権ソースに関連付けられた組織のうちの1つまたは複数を含むプロパティに基づいて、決定するように、さらに構成されている、請求項１８に記載のコンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願への相互参照）
本出願は、２０１８年９月２８日に出願された米国仮特許出願第６２／７３９，０９４号から優先権を主張して、２０１９年４月２４日に出願された米国特許出願第１６／３９３，９３０号からの優先権を主張し、それらの出願の内容は、その全体が参照により本明細書に組み込まれる。
【０００２】
本開示は、コンピュータセキュリティ、より具体的には、悪意のあるソフトウェアの実行を抑制、制御、または制限するための方法、技術、およびシステムに関する。
【背景技術】
【０００３】
ハッカーおよび他の悪意のある当事者が、ホームユーザ、企業、または政府によって運営されるコンピューティングシステムに侵入しようとする試みが、ますます増えている。多くの場合、ハッカーは、標的のコンピューティングシステムに悪意のあるソフトウェアをインストールして実行しようとする。悪意のあるソフトウェア（例えば、ウイルス、トロイの木馬、ワームなど）は、ハッカーがコンピューティングシステムに損害を与えたり、制御したり、アクセスしたり、その他の方法で侵害したりするために使用される可能性がある。
【図面の簡単な説明】
【０００４】
【図１Ａ】例示的な実施形態によって実行されるプロセスを示す流れ図である。
【図１Ｂ】例示的な実施形態によって実行されるプロセスを示す流れ図である。
【図１Ｃ】例示的な実施形態によって実行されるプロセスを示す流れ図である。
【図１Ｄ】例示的な実施形態によって実行されるプロセスを示す流れ図である。
【図１Ｅ】例示的な実施形態によって実行されるプロセスを示す流れ図である。
【図１Ｆ】例示的な実施形態によって実行されるプロセスを示す流れ図である。
【図１Ｇ】例示的な実施形態によって実行されるプロセスを示す流れ図である。
【図２】例示的な実施形態に従って、コンピュータセキュリティモジュールを実装するための例示的なコンピューティングシステムまたはデバイスのブロック図である。
【発明を実施するための形態】
【０００５】
本明細書に記載の実施形態は、コンピュータセキュリティ、より具体的には、悪意のあるソフトウェアの実行を抑制、制御、または制限するために、強化されたコンピュータベースおよびネットワークベースの方法、技術、およびシステムを提供する。いくつかの実施形態は、コンピューティングシステム上での悪意あるソフトウェアの実行を制御（例えば、抑制、制限、監視）するように構成されたコンピュータセキュリティモジュール（「ＣＳＭ」）を提供する。
【０００６】
ＣＳＭのコア機能は、プログラム（例えば、ネイティブ実行可能ファイル、スクリプトなど）の実行を許可するかどうかを決定することである。この決定は、少なくとも部分的にはプログラムのソース、特にプログラムが一連の特権（または「安全な」）ソースの１つによって提供されているかどうかに基づく。特権プログラムソースは、ディレクトリまたはフォルダ（例えば、ローカルディスクまたはネットワークアクセス可能なストア）、コンピューティングデバイス（例えば、サーバコンピュータ）、別のプログラム（例えば、ウェブサーバ）など、実行可能命令を提供できる任意のモジュール、メカニズム、またはプロセスであり得る。
【０００７】
場合によっては、特権ソースは、特権フォルダまたはディレクトリである。特権フォルダは、コンピュータシステムで実行するのに適格なプログラムを格納するものとして識別されたフォルダである。特権フォルダのセットには、オペレーティングシステムフォルダ（例えば、／ｂｉｎ、／ｓｂｉｎ、／ｓｙｓｔｅｍ３２など）、アプリケーションフォルダ（例えば、／Ｐｒｏｇｒａｍ  Ｆｉｌｅｓ、／ｕｓｒ／ｂｉｎ）、スタートアップフォルダまたはサービスフォルダ、第三者アプリフォルダ、独自の承認済みプログラムをインストールするためにコンピュータを所有または管理する組織（例えば、企業）のフォルダなどのうちの１つまたは複数を含む場合がある。
【０００８】
場合によっては、特権ソースは、特権コンピュータまたはプロセスである。特権コンピュータは、マシン名、ＩＰアドレス、ドメイン名、プロセス名、プロセス識別子、プロセス／プログラム署名（例えば、プログラム命令のハッシュ）などのような１つまたは複数の識別子によって識別され得る。
【０００９】
特権ソースは、「ホワイトリスト」または同様のデータ構造によって管理することができる。ホワイトリストには、特権ソースの複数の識別子が含まれる。識別子は、ディレクトリ名（ｓｙｓｔｅｍ３２）、ディレクトリパス（例えば、／ｕｓｒ／ｂｉｎ）、ＩＰアドレス、ドメイン名、マシン名などであり得るか、それらを含み得る。場合によっては、特権ソースを識別するために、ＵＲＬが使用されることがある。特権ソースは、他のプロパティまたは追加のプロパティに基づいて識別または決定されることがある。例えば、いくつかの実施形態は、そのソースとの通信が指定された時刻に（例えば、時間範囲内で）発生している場合、ソースが指定された地理的領域に位置している場合、ソースアドレスが特定の組織（例えば、ＷＨＯＩＳルックアップを介して）などに関連付けられている場合、ソースが特権的であると見なすことができる。いくつかの実施形態は、ソースとの通信の許可された、または許容可能なプロパティが１つまたは複数あるかどうかに基づいて、ソースが特権を与えられるかどうかの決定に、一般に基づくことができる。ネットワーク通信の許容性を決定することに関する追加情報は、２０１８年９月２５日に発行された「疑わしいネットワーク通信の評価」と題された米国特許第１０，０８４，７９１号に記載されており、その内容は参照により本明細書に組み込まれる。
【００１０】
ＣＳＭは、様々な方法で実装することができる。ＣＳＭは、ローダー、スケジューラ、メモリマネージャなどを含む、オペレーティングシステム内の１つまたは複数の位置に存在するコードとして実装され得る。例えば、ローダーは、メモリにロードされるときに、すべてのプログラムの位置をチェックする場合がある。その位置が特権フォルダのセットにない場合、ローダーは実行を終了する。別の例として、スケジューラは、レディキュー上の次のプログラムに切り替える前に、プログラムが特権フォルダの１つからロードされたものであるかどうかをチェックすることがある。そうでない場合、スケジューラは、プログラムを終了する。同様に、メモリマネージャは、新しい仮想アドレス空間（例えば、ページテーブルなど）の作成を求められたときに、要求元のプログラムが特権フォルダの１つからロードされたものかどうかをチェックできる。
【００１１】
スクリプトインタプリタを使用して、潜在的に悪意のある可能性のあるプログラムの実行を制御することもできる。いくつかの実施形態では、スクリプトインタプリタ（例えば、シェルスクリプト、ＶＢＳｃｒｉｐｔ、Ｐｅｌｌ、Ｐｉｏｎｓなど）は、特権フォルダの１つからロードされていない場合、所与のスクリプトの実行／解釈を拒否する。
【００１２】
当然、説明されている手法では、特権フォルダを「ロックダウン」する必要がある。つまり、特権フォルダは通常のユーザに対して書き込み保護されているため、適切な管理特権を有するユーザのみがこれらのフォルダにプログラムをインストールできる。さらに、悪意のある第三者によるプログラムのインストールを制限するために、セキュアブート、ロックされたＢＩＯＳなど、他の対策が講じられる場合がある。
【００１３】
図１Ａ〜図１Ｇは、例示的な実施形態によって実行される例示的なセキュリティプロセスの流れ図である。このプロセスは、コンピューティングシステム上で実行されるコンピュータ命令として実装することができる。上述のように、これらの命令は、ローダー、スケジューラ、メモリマネージャなどを含むオペレーティングシステムの１つまたは複数の部分に存在し得る。命令は、また、あるいはその代わりに、シェルコマンドインタープリタ、スクリプト言語インタープリタ、仮想マシン（例えば、Ｊａｖａ（登録商標）仮想マシン、Ｃ＃ＶＭ）など、オペレーティングシステムの「外部」で実行されるプログラムにも存在することがある。
【００１４】
図１Ａは、コンピュータセキュリティのための例示的な論理の流れ図である。この流れ図およびこれに続く流れ図に示す論理は、例えば、以下の図２に関して説明されているモジュール１００によって実行され得る。図１Ａは、以下のブロックを含むプロセス１Ａ００を示す。
【００１５】
ブロック１Ａ０１は、コンピューティングシステム上で実行することが許可されているプログラムを提供するようにそれぞれ指定されている１つまたは複数の特権ソースの表示を受信して、格納するステップを含む。ソースは、ローカルまたはリモートのファイルシステム上のディレクトリまたはフォルダであり得る。ソースは、また、あるいはその代わりに、ＩＰアドレス、ドメイン名、マシン名、ＵＲＬなどによって識別されるコンピュータ（例えば、サーバ）であり得る。いくつかの実施形態では、プロセスは、ファイルシステムに格納された書き込み保護されたドキュメントから「安全な」ソースの「ホワイトリスト」を読み取るか、またはそれにアクセスする。ホワイトリストでは、各ソースが実行に適格なプログラムのソースとして指定される。
【００１６】
ブロック１Ａ０２は、プログラムの表示を受信するステップを含む。プログラムの表示は、ロードプロセスの前または最中など、プログラムの開始前または開始中に受信することができる。プログラムの表示には、プログラムの位置、具体的にはプログラムのロード元のディレクトリのＩＤが含まれるか、それを使用して決定できる。リモートソースから取得したプログラム（例えば、ウェブブラウザによって受信されたＪａｖａＳｃｒｉｐｔ（登録商標）コード）の場合、表示は、リモートソースのＵＲＬ、ＩＰアドレス、ドメイン名、またはその他の識別子であるか、それらを含む場合がある。
【００１７】
ブロック１Ａ０３は、プログラムが１つまたは複数の特権ソースのうちの１つによって提供されるか否かを決定するステップを含む。プログラムは、特権ソースのホワイトリストの中で検索される。これは、辞書ルックアップ、ハッシュテーブルなどを介して達成することができる。この操作には、プログラム名、リモートプログラムソース（例えば、ドメイン名、ＩＰアドレス）などの検索が含まれる。
【００１８】
ブロック１Ａ０４は、プログラムが特権ソースのいずれからも提供されない場合、プログラムの実行を許可しないステップを含む。プログラムの実行を許可しないステップは、ロードプロセスを終了するステップ、例外を発生させるステップ（プログラムがオペレーティングシステムによって終了されるようにするため）、仮想メモリスペースの作成を拒否するステップ、スケジューラがプロセスの実行または切り替えを拒否するステップなど、様々な方法で実行できる。
【００１９】
図１Ｂは、図１Ａのプロセス１Ａ００の拡張を示す例示的な論理の流れ図である。図１Ｂは、プロセス１Ａ００を含み、さらに以下のブロックを含むプロセス１Ｂ００を示す。
【００２０】
ブロック１Ｂ０１は、表示されたプログラムがネットワークアクセス可能なソースによって提供される場合、ネットワークアクセス可能なソースが１つまたは複数の特権ソースのうちの１つであるかどうかを決定するステップを含む。典型的な実施形態では、リモートソースからプログラムをフェッチするウェブブラウザまたは他のモジュールが、リモートソースがホワイトリストの中で識別されているかどうかをチェックする。これには、リモートソースのＩＰアドレス、ドメイン名、マシン名、またはその他の識別子がホワイトリストの中に存在するかどうかをチェックすることが含まれることがある。
【００２１】
ブロック１Ｂ０２は、ネットワークアクセス可能なソースが１つまたは複数の特権ソースのいずれでもない場合、プログラムの実行を許可しないステップを含む。例えば、ソース識別子がホワイトリストの中に存在しない場合、ウェブブラウザまたは同様のモジュールはプログラムのロードまたは実行を拒否する。このアプローチでは、これらのチェックを実行するように変更されたウェブブラウザの使用が必要になる場合があることに留意されたい。ユーザは、任意のリモートコードを実行できない。なぜなら、ユーザは、そのようなコードを手動でダウンロードして実行できないから（指定されたディレクトリ内のコードのみを実行できるから）であり、また指定された特権ディレクトリのいずれにも安全でないウェブブラウザをインストールすることも許可されていないからである。
【００２２】
図１Ｃは、図１Ａのプロセス１Ａ００の拡張を示す例示的な論理の流れ図である。図１Ｃは、プロセス１Ａ００を含み、さらに以下のブロックを含むプロセス１Ｃ００を示す。
【００２３】
ブロック１Ｃ０１は、コンピューティングシステムによって実行されることが許可されているプログラムのプロバイダとして、１つまたは複数の特権ソースによって識別される１つまたは複数のディレクトリの変更を許可しないステップを含む。ディレクトリである安全なソースの場合、オペレーティングシステムのアクセス許可を使用して、（例えば、プログラムを追加または削除することによって）非特権ユーザによるそのようなディレクトリの変更を制限できる。
【００２４】
図１Ｄは、図１Ａのプロセス１Ａ００の拡張を示す例示的な論理の流れ図である。図１Ｄは、プロセス１Ａ００を含むプロセス１Ｄ００を示しており、プログラムの実行を許可しないステップは、以下のブロックを含む。
【００２５】
ブロック１Ｄ０１は、プログラムを終了するステップ、プログラムを一時停止するステップ、および／または例外を発生させるステップを含む。
【００２６】
図１Ｅは、図１Ａのプロセス１Ａ００の拡張を示す例示的な論理の流れ図である。図１Ｅは、プロセス１Ａ００を含むプロセス１Ｅ００を示しており、プログラムの実行を許可しないステップは、以下のブロックを含む。
【００２７】
ブロック１Ｅ０１は、代替実行環境でプログラムを実行するステップを含む。いくつかの実施形態では、プログラムは、代わりに実行を許可され得るが、サンドボックスまたは分離された仮想マシンなどの代替実行環境内に配置される。そのような実施形態では、プログラムを監視して、潜在的に悪意のあるコードの動作および特性をよりよく理解することができる。
【００２８】
図１Ｆは、図１Ａのプロセス１Ａ００の拡張を示す例示的な論理の流れ図である。図１Ｆは、プロセス１Ａ００を含み、さらに以下のブロックを含むプロセス１Ｆ００を示す。
【００２９】
ブロック１Ｆ０１は、ファイルから１つまたは複数の特権ソースの表示を受信するステップを含む。いくつかの実施形態は、特権ソースのリストを、非管理ユーザから書き込み保護されたファイルに格納する。
【００３０】
ブロック１Ｆ０２は、非特権ユーザによるファイルの変更を許可しないステップを含む。管理ユーザのみが、特権実行ソースを識別するファイルを変更することができる。
【００３１】
図１Ｇは、コンピュータセキュリティのための例示的な論理の流れ図である。図１Ｇは、以下のブロックを含むプロセス１Ｇ００を示す。
【００３２】
ブロック１Ｇ０１は、コンピューティングシステム上で実行することが許可されているプログラムを含むものとして、それぞれ指定されている１つまたは複数のディレクトリの表示を受信して、格納するステップを含む。いくつかの実施形態では、プロセスは、ファイルシステムに格納された書き込み保護されたドキュメントからファイルのリストを読み取る。
【００３３】
ブロック１Ｇ０２は、プログラムの表示を受信するステップを含む。プログラムの表示は、ロードプロセスの前または最中など、プログラムの開始前または開始中に受信することができる。プログラムの表示には、プログラムの位置、具体的には、プログラムのロード元のディレクトリのＩＤが含まれるか、それを使用して決定できる。
【００３４】
ブロック１Ｇ０３は、プログラムが１つまたは複数のディレクトリのうちの１つの中に位置するかどうかを決定するステップを含む。プログラムの位置は、特権フォルダのリストで検索される。これは、辞書ルックアップ、ハッシュテーブルなどを介して達成することができる。
【００３５】
ブロック１Ｇ０４は、プログラムが１つまたは複数のディレクトリのいずれにも配置されていない場合に、プログラムの実行を許可しないステップを含む。プログラムの実行を許可しないステップは、ロードプロセスを終了するステップ、例外を発生させるステップ（プログラムがオペレーティングシステムによって終了されるようにするため）、仮想メモリスペースの作成を拒否するステップ、スケジューラがプロセスまたは切り替えを拒否するステップなど、様々な方法で実行できる。
【００３６】
図２は、例示的な実施形態に従って、コンピュータセキュリティモジュールを実装するための例示的なコンピューティングシステムまたはデバイスのブロック図である。特に、図２は、本明細書で説明される技術の少なくともいくつかを実装するモジュール１００を実行するコンピューティングシステム１０を示す。
【００３７】
示される実施形態では、コンピューティングシステム１０は、コンピュータメモリ（「メモリ」）１１、ディスプレイ１２、１つまたは複数の中央処理装置（「ＣＰＵ」）１３、入力／出力デバイス１４（例えば、キーボード、マウス、ＣＲＴまたはＬＤＣディスプレイなど）、他のコンピュータ可読媒体１５、およびネットワーク接続１６を備える。モジュール１００は、メモリ１１に常駐するように示されている。他の実施形態では、コンテンツの一部、モジュール１００のコンポーネントの一部または全部は、他のコンピュータ可読媒体１５上に格納および／または送信され得る。モジュール１００は、好ましくは、１つまたは複数のＣＰＵ１３上で実行され、本明細書に記載の技術を実行する。他のコードまたはプログラム３０（例えば、管理インターフェース、ウェブサーバなど）および潜在的にデータリポジトリ２０などの他のデータリポジトリも、メモリ１１に常駐し、好ましくは、１つまたは複数のＣＰＵ１３で実行される。図７の１つまたは複数のコンポーネントは、特定の実装に存在しない場合があることに注意されたい。例えば、いくつかの実施形態は、他のコンピュータ可読媒体１５またはディスプレイ１２を設けていない場合がある。
【００３８】
モジュール１００は、デバイス１００のメモリ１１で実行されていることが示されている。メモリ１１には、ユーザインターフェースマネージャ４１およびアプリケーションプログラムインターフェース（「ＡＰＩ」）４２も含まれる。ユーザインターフェースマネージャ４１およびＡＰＩ４２は、他の実施形態では、これらのコンポーネントのうちの１つまたは複数によって実行される機能がモジュール１００の外部で実行され得ることを示すために破線で描かれている。
【００３９】
ＵＩマネージャ４１は、モジュール１００およびその様々なコンポーネントとのユーザ相互作用を容易にするビューおよびコントローラを提供する。例えば、ＵＩマネージャ４１は、ユーザまたは管理者がモジュール１００と対話できるように、モジュール１００への対話型アクセスを提供することができる。いくつかの実施形態では、ＵＩマネージャ４１の機能へのアクセスは、おそらく他のプログラム３０の１つとして実行されるウェブサーバを介して提供され得る。そのような実施形態では、ユーザコンピューティングシステム６０上で実行するウェブブラウザを操作するユーザは、ＵＩマネージャ４１を介してモジュール１００と対話することができる。
【００４０】
ＡＰＩ４２は、モジュール１００の１つまたは複数の機能へのプログラムによるアクセスを提供する。例えば、ＡＰＩ４２は、他のプログラム３０の１つによって呼び出され得るモジュール１００または他のモジュールの１つまたは複数の機能へのプログラムによるインターフェースを提供し得る。このようにして、ＡＰＩ４２によって、ユーザインターフェース、プラグイン、アダプタ（例えば、モジュール１００の機能をウェブアプリケーションに統合するための）などのような第三者ソフトウェアの開発が容易になる。
【００４１】
モジュール１００は、ネットワーク９９を介してネットワーク接続１６を使用して、コンピューティングシステム６０、６２、および６４を含む他のデバイス／システムと相互作用することができる。ネットワーク９９は、離れた場所にいる人間および／またはデバイス間の通信を容易にする媒体（例えば、ツイストペア、同軸、光ファイバ、無線周波数）、ハードウェア（例えば、ルータ、スイッチ、リピータ、トランシーバ）、およびプロトコル（例えば、ＴＣＰ／ＩＰ、ＵＤＰ、イーサネット（登録商標）、Ｗｉ−Ｆｉ、ＷｉＭＡＸ）などの任意の組合せであり得る。
【００４２】
モジュール１００を実装および／または実行するために、１つまたは複数の汎用または特殊目的のコンピューティングシステム／デバイスを使用できることに留意されたい。しかしながら、モジュール１００を汎用コンピューティングシステムに実装することが可能であるという理由だけで、技術自体または技術を実装するために必要な操作（単独または組み合わせて）が従来型または周知であることを意味するものではない。これらの技術は、少なくとも従来型のものではない。なぜなら、１つまたは複数のコンピューティングシステムの操作、統合、または効率を改善することなどによって、既存の技術に対処して、改善するからである。
【００４３】
例示的な実施形態では、モジュール１００のコンポーネント／モジュールは、ソフトウェアプログラミング技術を使用して実装される。例えば、モジュール１００は、１つまたは複数の静的または動的ライブラリとともに、ＣＰＵ１３上で実行される「ネイティブ」実行可能ファイルとして実装され得る。他の実施形態では、モジュール１００は、他のプログラム３０の１つとして実行される仮想マシンによって処理される命令として実装され得る。
【００４４】
様々なコンポーネントは、例えば、単一のＣＰＵコンピュータシステム上で実行される実行可能ファイルとして、よりモノリシックなプログラミング技術を使用して実装され得るか、あるいは、代替として、それぞれが１つまたは複数のＣＰＵを有する１つまたは複数のコンピュータシステム上で実行されるマルチプログラミング、マルチスレッド、クライアントサーバ、またはピアツーピアを含むが、これらに限定されない様々な構造化技術を使用して分解され得る。いくつかの実施形態は、同時に、非同期的に実行し、メッセージパッシング、リモートプロシージャコール、または他の分散コンピューティングパラダイムを使用して通信することができる。同等の同期の実施形態もサポートされる。また、他の機能は、各コンポーネント／モジュールによって、異なる順序で、異なるコンポーネント／モジュールによって実装および／または実行される可能性があるが、それでも説明された機能を達成する。
【００４５】
さらに、データストア２０などのモジュール１００の一部として格納されたデータへのプログラミングインターフェースは、言語固有のＡＰＩ、ファイル、データベース、またはその他のデータリポジトリにアクセスするためのライブラリによって、ＸＭＬなどの表現言語を介して、あるいはウェブサーバ、ＦＴＰサーバ、または保存されたデータへのアクセスを提供する他のタイプのサーバを介して、利用可能であり得る。データストア２０は、１つまたは複数のデータベースシステム、ファイルシステム、またはそのような情報を格納するための他の任意の技術、あるいは分散コンピューティング技術を使用する実装を含む上記の任意の組合せとして実装することができる。
【００４６】
さらに、いくつかの実施形態では、モジュール１００のコンポーネントのいくつかまたはすべては、少なくとも部分的に、ファームウェアおよび／またはハードウェアの中で、他の方法で実装または提供され得る。ファームウェアおよび／またはハードウェアには、１つまたは複数の特定集積回路（「ＡＳＩＣ」）、標準集積回路、適切な命令を実行するコントローラで、マイクロコントローラおよび／または組み込みコントローラを含むコントローラ、フィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）、コンプレックスプログラマブルロジックデバイス（「ＣＰＬＤ」）などを含むが、これらには限定されない。システムコンポーネントおよび／またはデータ構造の一部またはすべては、また、コンテンツとして（例えば、実行可能ファイル、もしくは他の機械可読ソフトウェア命令または構造化データとして）、コンピュータ可読媒体（例えば、ハードディスク、メモリ、コンピュータネットワークもしくはセルラーワイヤレスネットワーク、または他のデータ伝送媒体、または適切なドライブによって、またはＤＶＤもしくはフラッシュメモリデバイスなどの適切な接続を介して読み取る形態媒体物品）に格納され得、コンピュータ可読媒体および／または１つまたは複数の関連するコンピューティングシステムまたはデバイスを有効化または構成して、説明された技術の少なくともいくつかを実行するためにコンテンツを実行、または使用もしくは提供するようにする。コンポーネントおよび／またはデータ構造の一部またはすべては、有形の非一時的な記憶媒体に格納されることがある。システムコンポーネントおよびデータ構造の一部またはすべては、データ信号として（例えば、搬送波の一部としてエンコードされることによって、あるいはアナログまたはデジタル伝搬信号の一部として含まれることによって）、様々なコンピュータ可読伝送媒体に格納することもできる。次いで、これらの信号は、ワイヤレスベースおよび有線／ケーブルベースの媒体を介して送信され、様々な形式をとることができる（例えば、単一または多重化されたアナログ信号の一部として、あるいは複数の個別のデジタルパケットまたはフレームとして）。そのようなコンピュータプログラム製品は、また、他の実施形態において他の形態をとることができる。したがって、本開示の実施形態は、他のコンピュータシステム構成で実施することができる。
【００４７】
本発明の実施形態は、上記のように例示され、説明されてきたが、本発明の精神および範囲から逸脱することなく、多くの変更を行うことができる。したがって、本発明の範囲は、上記の開示によって限定されない。
【図１Ａ】
2022501727.tif 000003
【図１Ｂ】
2022501727.tif 000004
【図１Ｃ】
2022501727.tif 000005
【図１Ｄ】
2022501727.tif 000006
【図１Ｅ】
2022501727.tif 000007
【図１Ｆ】
2022501727.tif 000008
【図１Ｇ】
2022501727.tif 000009
【図２】
2022501727.tif 000010
【国際調査報告】
2022501727.tif 000011