【文献】
Avrim BLUM,Combining Labeled and Unlabeled Data with Co-Training,COLT' 98 Proceedings of the eleventh annual conference on Computational learning theory,1998年 7月26日,pp.92-100
(58)【調査した分野】(Int.Cl.,DB名)
前記訓練データを修正するステップがさらに、展開中の前記第1のヒューリスティックによって生成された真陽性も含むように前記訓練データを修正するステップを含む請求項2に記載の方法。
展開中の前記第1のヒューリスティックによって生成された偽陽性を識別するステップが、前記第1のヒューリスティックをフィールドデータに適用したときに生成された偽陽性を識別するステップを含む請求項1乃至7の何れか一項に記載の方法。
コンピュータ実行可能命令を備えるコンピュータ可読媒体であって、前記コンピュータ実行可能命令が、計算装置の少なくとも1つのプロセッサによって実行されるときに、前記計算装置に、
1組の訓練データを使用して第1のヒューリスティックを訓練し、
前記第1のヒューリスティックを展開し、
展開中の前記第1のヒューリスティックによって生成された偽陽性を識別し、
前記第1のヒューリスティックによって生成された前記偽陽性を含むように前記訓練データを修正し、
前記修正された訓練データを使用して第2のヒューリスティックを作成し、
前記第2のヒューリスティックをフィールド試験する前に、前記第1のヒューリスティックと前記第2のヒューリスティックの両方を展開し、
前記第1のヒューリスティックが正しく分類したフィールドデータ上に前記第1のヒューリスティック及び前記第2のヒューリスティックによって集成として偽陽性が生成されることを抑制するために、前記第1のヒューリスティックと前記第2のヒューリスティックの両方を順次に1組の前記フィールドデータに適用する
ように動作させ、
前記第1のヒューリスティックと前記第2のヒューリスティックの両方を順次に前記フィールドデータに適用することには、
前記フィールドデータを前記第1のヒューリスティックに通し、
前記フィールドデータを前記第1のヒューリスティックに通すと、前記フィールドデータを前記第2のヒューリスティックに通す
ことが含まれる、コンピュータ可読媒体。
【発明を実施するための形態】
【0011】
図面全体を通して、同一の参照符号および説明は、同様の要素を示すが、必ずしも同一の要素ではない。本明細書で述べる例示的実施形態は、様々な修正形態および代替形態が可能であるが、特定の実施形態を例として図面に示し、本明細書で詳細に説明する。しかし、本明細書で述べる例示的実施形態は、開示する特定の形態に限定されるものとは意図されていない。そうではなく、本開示は、添付の特許請求の範囲の範囲内に入るすべての修正形態、均等形態、および代替形態を網羅する。
【0012】
以下でより詳細に説明するように、本開示は、一般に、偽陽性を減少させるために複数のインラインヒューリスティックを使用するためのシステムおよび方法に関する。一例では、本明細書で開示するシステムおよび方法は、このタスクを、1)1組の訓練データを使用して第1のヒューリスティック(マルウェア検出決定木など)を訓練し、2)第1のヒューリスティックを展開し、3)フィールドで(すなわち展開中に)第1のヒューリスティックによって生成された偽陽性を識別し、4)第1のヒューリスティックによって生成された偽陽性を含むように訓練データを修正し、5)修正された訓練データを使用して第2のヒューリスティックを作成し、6)第1のヒューリスティックと第2のヒューリスティックの両方を展開し、次いで7)第1のヒューリスティックと第2のヒューリスティックの両方を順次に1組のフィールドデータに適用することによって達成することができる。
【0013】
本明細書で使用するとき、用語「ヒューリスティックアルゴリズム」またはしばしば単に「ヒューリスティック」は、オブジェクトまたはサンプルを分類する、またはそれらに関して決定を下すために使用することができる任意の種類または形態のアルゴリズム、公式、モデル、またはツールを全般的に表す。いくつかの例では、本明細書で述べる様々なヒューリスティックは、限定はしないが、マルウェアを検出および/または識別するために設計された決定木または他のアルゴリズムを表すことがある。
【0014】
さらに、用語「偽陽性」および「真陽性」は、ヒューリスティックなど決定プロセスから生じ得る結果を全般的に表す。特に、「偽陽性」は、実際には帰無仮説が真であるときに帰無仮説を否定することで成される誤りを表すことがある。例えば、マルウェア検出ヒューリスティックは、正当なファイルまたはソフトウェアアプリケーションを悪意のあるものとして誤って判断することによって偽陽性を生成することがある。逆に、「真陽性」は、帰無仮説を真と認める正しい決定を表すことがある。例えば、マルウェア検出ヒューリスティックは、正当なファイルまたはソフトウェアアプリケーションを正当なものとして正しく判断することによって真陽性を生成することがある。
【0015】
以下、
図1および
図2を参照して、偽陽性を減少させるために複数のインラインヒューリスティックを使用するための例示的なシステムを詳細に説明する。また、それに対応するコンピュータ実装方法を、
図3〜
図6に関連付けて詳細に説明する。さらに、本明細書で述べる1つまたは複数の実施形態を実装することができる例示的な計算システムおよびネットワークアーキテクチャを、それぞれ
図7および
図8に関連付けて詳細に説明する。
【0016】
図1は、偽陽性を減少させるために複数のインラインヒューリスティックを使用するための例示的なシステム100のブロック図である。この図に示されるように、例示的なシステム100は、1つまたは複数のタスクを実施するための1つまたは複数のモジュール102を含むことがある。例えば、以下でより詳細に説明するように、例示的なシステム100は、ヒューリスティックを訓練するようにプログラムされた訓練モジュール104を含むことがある。また、例示的なシステム100は、コミュニティまたは企業内でヒューリスティックを展開するようにプログラムされた展開モジュール106を含むこともある。
【0017】
さらに、以下でより詳細に説明するように、例示的なシステム100は、展開中にヒューリスティックによって生成された偽陽性および真陽性を識別するようにプログラムされた識別モジュール108を含むこともある。また、例示的なシステム100は、1)フィールドからの結果を含むように訓練データを修正し、2)この修正された訓練データを使用してさらなるヒューリスティックを作成するようにプログラムされた調整モジュールも含むことがある。個別の要素として図示されているが、
図1のモジュール102の1つまたは複数が、単一のモジュールまたはアプリケーションの一部を表すこともある。
【0018】
いくつかの実施形態では、
図1のモジュール102の1つまたは複数は、計算装置によって実行されたときに計算装置に1つまたは複数のタスクを実施させることができる1つまたは複数のソフトウェアアプリケーションまたはプログラムを表すことがある。例えば、以下でより詳細に説明するように、モジュール102の1つまたは複数は、
図2に示される装置(例えば計算サブシステム202および206(1)〜206(N))、
図7の計算システム710、および/または
図8の例示的なネットワークアクチュエータ800の一部など、1つまたは複数の計算装置に記憶され、そこで実行されるように構成されたソフトウェアモジュールを表すことがある。また、
図1のモジュール102の1つまたは複数は、1つまたは複数のタスクを実施するように構成された1つまたは複数の専用コンピュータの全体または一部を表こともある。
【0019】
図1に示されるように、例示的なシステム100は、1つまたは複数のデータベース120を含むこともある。データベース120は、単一のデータベースもしくは計算装置の一部または複数のデータベースもしくは計算装置を表すことがある。一実施形態では、データベース120は、訓練データ122およびフィールドデータ124を記憶するように構成されることがある。以下でより詳細に説明するように、訓練データ122は、ヒューリスティックを訓練するために使用することができる既知のサンプルのコーパスを表すことがある。対照的に、フィールドデータ124は、1)ヒューリスティックによって分類されたサンプルコーパス、および/または2)ヒューリスティックによってこれらのサンプルに割り当てられた分類を識別または包含する(ヒューリスティックが展開されている計算システムから収集された)データを表すことがある。
【0020】
図1のデータベース120は、1つまたは複数の計算装置の一部を表すことがある。例えば、データベース120は、
図2での計算サブシステム202および206(1)〜206(N)の一部、
図7の計算システム710、および/または
図8の例示的なネットワークアーキテクチャ800の一部を表すことがある。あるいは、
図1のデータベース120は、
図2の計算サブシステム202および206(1)〜206(N)、
図7の計算システム710、および/または
図8の例示的なネットワークアーキテクチャ800の一部など、計算装置がアクセスすることができる1つまたは複数の物理的に別個の装置を表すことがある。
【0021】
図1の例示的なシステム100は、様々な方法で展開することができる。例えば、例示的なシステム100の全体または一部が、
図2に示される例示的なシステム200などクラウドコンピューティング環境またはネットワークベース環境の一部を表すことがある。クラウドコンピューティング環境は、インターネットを介して様々なサービスおよびアプリケーションを提供することができる。これらのクラウドベースのサービス(例えば、サービスとしてのソフトウェア、サービスとしてのプラットフォーム、サービスとしてのインフラストラクチャなど)は、ウェブブラウザまたは他の遠隔インターフェースを介してアクセス可能になることがある。本明細書で述べる様々な機能は、遠隔のデスクトップ環境または任意の他のクラウドベースのコンピューティング環境によって提供することができる。
【0022】
図2に示されるように、例示的なシステム200は、ネットワーク204を介して計算サブシステム206(1)〜206(N)と通信する計算サブシステム202を含むことがある。一実施形態では、以下でより詳細に述べるように、計算装置202にあるモジュール102は、1)1組の訓練データを使用して第1のヒューリスティックを訓練し、2)(例えば以下で説明するように計算サブシステム206(1)〜206(N)上で)第1のヒューリスティックを展開し、3)展開中の第1のヒューリスティックによって生成された偽陽性を識別し、4)第1のヒューリスティックによって生成された偽陽性を含むように訓練データを修正し、5)修正された訓練データを使用して第2のヒューリスティックを作成し、6)(例えば以下で説明するように計算サブシステム206(1)〜206(N)上で)第1のヒューリスティックと第2のヒューリスティックの両方を展開し、次いで7)(例えば以下で説明するように計算サブシステム206(1)〜206(N)上で)第1のヒューリスティックと第2のヒューリスティックの両方を順次に1組のフィールドデータに適用するようにプログラムすることができる。
【0023】
計算サブシステム202および206(1)〜206(N)は、コンピュータ実行可能命令を読み取ることができる任意の種類または形態の計算装置を全般的に表す。計算サブシステム202および206(1)〜206(N)の例としては、限定はしないが、ラップトップコンピュータ、デスクトップコンピュータ、サーバ(様々なデータベースサービスを提供する、および/または何らかのソフトウェアアプリケーションを実行するように構成されたアプリケーションサーバおよびデータベースサーバ)、セルラ電話、個人用携帯情報端末(PDA)、マルチメディアプレーヤ、組込みシステム、それらのうちの1つまたは複数の組合せ、
図7の例示的な計算システム710、または任意の他の適切な計算装置が挙げられる。
【0024】
一例では、計算サブシステム202は、ヒューリスティックを作成して計算サブシステム206(1)〜206(N)に展開するように構成されたサーバまたはバックエンドを表すことがある。この例では、計算サブシステム206(1)〜206(N)は、単一のコミュニティまたは複数のコミュニティの全体または一部を表すことがある。例えば、計算サブシステム206(1)〜206(N)は、単一または複数のユーザ基盤、単一または複数の企業、あるいはそれらのうちの1つまたは複数の一部または組合せの中にある計算システムを表すことがある。
【0025】
ネットワーク204は、通信またはデータ転送を容易くすることができる任意の媒体またはアーキテクチャを全般的に表す。ネットワーク204の例としては、限定はしないが、イントラネット、ワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)、パーソナルエリアネットワーク(PAN)、インターネット、電力線通信(PLC)、セルラネットワーク(例えばGSMネットワーク)、
図8の例示的なネットワークアーキテクチャ800などが挙げられる。ネットワーク204は、無線または有線接続を使用して通信またはデータ転送を容易くすることができる。一実施形態では、ネットワーク204は、計算サブシステム202および206(1)〜206(N)の間の通信を容易くすることができる。
【0026】
図3は、偽陽性を減少させるために複数のインラインヒューリスティックを使用するための例示的なコンピュータ実装方法300の流れ図である。
図3に示されるステップは、任意の適切なコンピュータ実行可能コードおよび/または計算システムによって実施することができる。いくつかの実施形態では、
図3に示されるステップは、
図1のシステム100および/または
図2のシステム200の構成要素の1つまたは複数によって実施することができる。
【0027】
図3のステップ302で、本明細書で述べるシステムの1つまたは複数が、1組の訓練データを使用して第1のヒューリスティックを訓練することがある。例えば、
図1の訓練モジュール104(上で詳述したように、
図2の計算サブシステム202の一部を表すことがある)が、訓練データ122を使用して第1のヒューリスティックを訓練することがある。上で詳述したように、このヒューリスティックは(本明細書で述べるすべての他のヒューリスティックと同様に)任意の種類または形態の決定ベースアルゴリズムを表すことがある。いくつかの例では、このヒューリスティックは、マルウェアを検出および識別するように構成されたマルウェア検出ヒューリスティック(例えば決定木)を表すことがある。
【0028】
訓練モジュール104は、様々な方法でヒューリスティックを訓練することができる。例えば、訓練モジュール104は、最初のバージョンのヒューリスティック(すなわち第1のヒューリスティック)を、コンピュータ室など制御された環境内にある既知のサンプルのコーパス(例えば、既知の悪意のあるファイルおよび既知の正当なファイルを含むサンプルコーパスを表すことがある訓練データ122)に適用することができる。次いで、訓練モジュール104は、ヒューリスティックが既知のサンプルのコーパス中の各サンプルを正しく分類したかどうか判断することができる。訓練モジュール104は、ヒューリスティックが分類を誤った訓練データ122中のサンプルが許容数を超えていると判断した場合、ヒューリスティックの精度を改良することを試みてヒューリスティックの基本アルゴリズムを微調整または修正することがある。次いで、訓練モジュール104は、許容範囲内の正解率が実現されるまでこのプロセスを繰り返すことができる。
【0029】
図3に戻ると、ステップ304で、本明細書で述べる様々なシステムが、ステップ302で訓練された第1のヒューリスティックを展開することができる。例えば、
図1の展開モジュール106(上で詳述したように、
図2の計算サブシステム202の一部を表すことがある)が、ステップ302で訓練されたヒューリスティックを、計算サブシステム202からネットワーク204を介して1つまたは複数の計算サブモジュール206(1)〜206(N)に展開することができる。
【0030】
上で詳述したように、一例では、計算サブシステム202は、ヒューリスティックを訓練して計算サブシステム206(1)〜206(N)に展開するように構成されたサーバおよびバックエンドを表すことがある。この例では、計算サブシステム206(1)〜206(N)は、単一のコミュニティまたは複数のコミュニティの全体または一部を表すことがある。例えば、計算サブシステム206(1)〜206(N)は、単一または複数のユーザ基盤、単一または複数の企業、あるいはそれらのうちの1つまたは複数の一部または組合せの中にある計算システムを表すことがある。
【0031】
ステップ306で、本明細書で述べる様々なシステムが、展開中の第1のヒューリスティックによって生成された偽陽性を識別することができる。例えば、識別モジュール108(上で詳述したように、
図2の計算サブシステム202の一部を表すことがある)が、ステップ302で訓練された第1のヒューリスティックが計算サブシステム206(1)〜206(N)で展開されたときに生成された偽陽性を識別することができる。
【0032】
識別モジュール108は、当技術分野で知られているあらゆる様々な従来の技法の使用を含め様々な方法で、展開中のヒューリスティックによって生成された偽陽性を識別することができる。一例では、識別モジュール108は、ヒューリスティックによって分類された様々なサンプルと、ヒューリスティックによってこれらのサンプルに割り当てられた分類との両方を識別する情報を(例えばヒューリスティックが展開されているフィールドのシステムから)受信することができる。いくつかの場合には、この情報は、サンプル自体のコピーを含むこともある。次いで、識別モジュール108は、ヒューリスティックが各サンプルを正しく分類したかどうか判断するために、このフィールドデータを分析することができる。特に、識別モジュール108は、ヒューリスティックが偽陽性を生成したかどうか判断するために、このフィールドデータを分析することができる。
【0033】
例えば、識別モジュール108は、計算サブシステム202の一部として、計算サブシステム206(1)〜206(N)からフィールドデータ124を受信することができる。マルウェア検出ヒューリスティックの場合、フィールドデータ124は、1)マルウェア検出ヒューリスティックによって分類された計算サブシステム206(1)〜206(N)上の様々なファイルと、2)マルウェア検出ヒューリスティックによってこれらのファイルに割り当てられた分類(例えば「正当なファイル」または「悪意のあるファイル」)とを識別または包含することができる。
【0034】
次いで、識別モジュール108は、マルウェア検出ヒューリスティックが各ファイルを正しく分類したかどうか判断するために、フィールドデータ124を分析することができる。この分析中、識別モジュール108は、マルウェア検出ヒューリスティックによって生成された真陽性(例えば、正当なものとして正しく分類された正当なファイル)と偽陽性(例えば、悪意のあるものとして誤って分類された正当なファイル)を識別することができる。
【0035】
図3に戻ると、ステップ308で、本明細書で述べるシステムは、展開中の第1のヒューリスティックによって生成された偽陽性を含むように訓練データを修正することができる。例えば、
図4に示されるように、
図1からの調整モジュール110(上で詳述したように、
図2の計算サブシステム202の一部を表すことがある)が、フィールドデータ124から、訓練データ122を含む元のサンプルコーパスに真陽性126および偽陽性128を追加することができる。
【0036】
図3に戻ると、ステップ310で、本明細書で述べるシステムは、ステップ308からの修正された訓練データを使用して第2のヒューリスティックを作成することができる。例えば、調整モジュール110が、計算サブシステム202の一部として、
図4の修正された訓練データ402を使用して第2のヒューリスティックを作成することができる。
【0037】
調整モジュール110は、様々な方法でこの第2のヒューリスティックを作成することができる。例えば、
図5に示されるように、
図1からの調整モジュール110は、第1のヒューリスティックを作成するために使用された機械学習技法502を修正された訓練データ402に適用することによって、第2のヒューリスティック514を作成することができる。
【0038】
ステップ312で、本明細書で述べるシステムは、第1のヒューリスティックと第2のヒューリスティックの両方を展開することができる。例えば、
図1からの展開モジュール106が、計算サブシステム202に、第1のヒューリスティック512と第2のヒューリスティック514の両方を、ネットワーク204を介して計算サブシステム206(1)〜206(N)に展開するように動作させることができる。
【0039】
少なくとも1つの例では、展開モジュール106は、第2のヒューリスティック514をフィールド試験する前にそれを展開することができる。例えば、以下に論じるように、展開モジュール106は、第1のヒューリスティック512と第2のヒューリスティック514の両方を順次に適用することができるので、フィールドデータを使用して第2のヒューリスティック514を試験および洗練する必要なく、作成後に即座に第2のヒューリスティック514を展開することができる。
【0040】
ステップ314で、本明細書で述べるシステムは、第1のヒューリスティックと第2のヒューリスティックの両方を順次に1組のフィールドデータに適用することができる。例えば、展開モジュール106は、
図5の第1のヒューリスティック512と第2のヒューリスティック514の両方を順次に、計算サブシステム206(1)〜206(N)上の1組のフィールドデータに適用することができる。
【0041】
本明細書で述べるシステムは、様々な方法でステップ314を実施することができる。一例では、
図6に示されるように、展開モジュール106は、1)(例えばフィールドデータ602を第1のヒューリスティック512に通すことによって)第1のヒューリスティック512をフィールドデータ602に適用し、次いで第1のヒューリスティック512を適用した後に、2)(例えばフィールドデータ602を第2のヒューリスティック514に通すことによって)第2のヒューリスティック514をフィールドデータ602に適用することによって、第1のヒューリスティック512と第2のヒューリスティック514の両方を1組のフィールドデータ602に適用することができる。ステップ312の完了後、
図3の例示的な方法300を終了することができる。
【0042】
いくつかの例では、展開モジュール106は、第1のヒューリスティック512によって生成された分類結果604を第2のヒューリスティック514によって生成された分類結果606と比較して、既知の偽陽性を識別してなくすことができる。例えば、識別モジュール108は、(ステップ306に関連付けて上で詳述したように)第1のヒューリスティック512がフィールドで最初に展開されたときに第1のヒューリスティック512によって生成された様々な偽陽性を予め識別しているので、展開モジュール106は、これらの偽陽性が分類結果604および606に含まれているかどうか判断することができ、含まれている場合には、それを訂正するか廃棄することができる。
【0043】
本明細書で述べるシステムおよび方法は、第1のヒューリスティックと第2のヒューリスティックの両方を順次に適用することによって、これらのヒューリスティックによって集成として生成される偽陽性の数を効果的に減少させることができる。例えば、第2のヒューリスティックが第1のヒューリスティックとは異なる偽陽性特性を有することがあるが(例えば、第2のヒューリスティックは、第1のヒューリスティックとの相違により、第1のヒューリスティックによって正しく分類されたサンプルに対して偽陽性を生成することがある)、両方のヒューリスティックを順次に適用することで、第1のヒューリスティックが生成しなかった新たな偽陽性をこれら2つのヒューリスティックが集成として生成することを防止することができる。すなわち、本明細書で開示するシステムおよび方法は、これらのヒューリスティックを順次に適用することによって、第1のヒューリスティックが正しく分類したサンプルに対してこれらのヒューリスティックが偽陽性を集成として生成するのを防止することができる。
【0044】
したがって、本明細書で開示するシステムおよび方法は、偽陽性率に悪影響を及ぼすことなく、ヒューリスティックの全体の精度を向上させることができる。さらに、開発者は、第2のヒューリスティックをフィールド試験する必要なく即座にそれを展開することができるので、これらのシステムおよび方法は、開発者が、大幅に長い開発時間をかけることなく、ヒューリスティックによって生成される偽陽性の数を迅速かつ効果的に減少させることができるようにする。
【0045】
図7は、本願で説明および/または図示する実施形態の1つまたは複数を実施することができる例示的な計算システム710のブロック図である。計算システム710は、コンピュータ可読命令を実行することができる任意のシングルプロセッサまたはマルチプロセッサ計算装置またはシステムを広範に表す。計算システム710の例としては、限定はしないが、ワークステーション、ラップトップコンピュータ、クライアント側の端末、サーバ、分散コンピューティングシステム、ハンドヘルド装置、または任意の他の計算システムもしくは装置が挙げられる。その最も基本的な構成では、計算システム710は、少なくとも1つのプロセッサ714と、システムメモリ716とを含むことができる。
【0046】
プロセッサ714は、データを処理することができる、または命令を解釈および実行することができる任意の種類または形態の処理ユニットを全般的に表す。いくつかの実施形態では、プロセッサ714は、ソフトウェアアプリケーションまたはモジュールから命令を受信することができる。これらの命令は、本願で説明および/または図示する1つまたは複数の例示的実施形態の機能をプロセッサ714に実施させることができる。例えば、プロセッサ714は、単独で、または他の要素と組み合わせて、本明細書で述べる訓練、展開、識別、調整、複製、修正、再訓練、および使用ステップの1つまたは複数を実施することができ、および/またはそれらを実施するための手段であってよい。また、プロセッサ714は、本願で説明および/または図示する任意の他のステップ、方法、またはプロセスを実施することもでき、および/またはそれらを実施するための手段であってもよい。
【0047】
システムメモリ716は、データおよび/または他のコンピュータ可読命令を記憶することができる任意の種類または形態の揮発性または不揮発性記憶装置または媒体を全般的に表す。システムメモリ716の例としては、限定はしないが、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、フラッシュメモリ、または任意の他の適切なメモリ装置が挙げられる。必ずそうである必要はないが、いくつかの実施形態では、計算システム710は、揮発性メモリユニット(例えばシステムメモリ716など)と不揮発性メモリ装置(例えば以下で詳細に説明する主記憶装置732など)の両方を含むこともある。一例では、
図1からのモジュール102の1つまたは複数をシステムメモリ716にロードすることができる。
【0048】
いくつかの実施形態では、例示的な計算システム710は、プロセッサ714およびシステムメモリ716に加えて、1つまたは複数の構成要素または要素を含むこともできる。例えば、
図7に示されるように、計算システム710は、メモリコントローラ718と、入出力(I/O)制御装置720と、通信インターフェース722とを含むことがあり、これらはそれぞれ通信インフラストラクチャ712を介して相互接続されることがある。通信インフラストラクチャ712は、計算装置の1つまたは複数の構成要素間の通信を容易くすることができる任意の種類または形態のインフラストラクチャを全般的に表す。通信インフラストラクチャ712の例としては、限定はしないが、通信バス(ISA、PCI、PCIe、または同様のバスなど)およびネットワークが挙げられる。
【0049】
メモリコントローラ718は、メモリまたはデータを取り扱うことができる、あるいは計算システム710の1つまたは複数の構成要素間の通信を制御することができる任意の種類または形態の装置を全般的に表す。例えば、いくつかの実施形態では、メモリコントローラ718は、通信インフラストラクチャ712を介するプロセッサ714と、システムメモリ716と、I/O制御装置720との間の通信を制御することができる。いくつかの実施形態では、メモリコントローラは、単独で、または他の要素と組み合わせて、訓練、展開、識別、調整、複製、修正、再訓練、および使用など、本願で説明および/または図示するステップまたは機能の1つまたは複数を実施することができ、および/またはそれらを実施するための手段であってよい。
【0050】
I/O制御装置720は、計算装置の入出力機能を調整および/または制御することができる任意の種類または形態のモジュールを全般的に表す。例えば、いくつかの実施形態では、I/O制御装置720は、プロセッサ714、システムメモリ716、通信インターフェース722、ディスプレイアダプタ726、入力インターフェース730、および記憶インターフェース734など、計算システム710の1つまたは複数の要素間でのデータの転送を制御する、または容易くすることができる。I/O制御装置720は、例えば、単独で、または他の要素と組み合わせて、本明細書で述べる訓練、展開、識別、調整、複製、修正、再訓練、および使用ステップの1つまたは複数を実施するために使用することができ、および/またはそれらを実施するための手段であってよい。また、I/O制御装置720は、本開示に記載する他のステップおよび機能を実施するために使用することもでき、および/またはそれらを実施するための手段であってもよい。
【0051】
通信インターフェース722は、例示的な計算システム710と1つまたは複数の追加の装置との間の通信を容易くすることができる任意の種類または形態の通信装置またはアダプタを広範に表す。例えば、いくつかの実施形態では、通信インターフェース722は、計算システム710と、追加の計算システムを含むプライベートネットワークまたはパブリックネットワークとの間の通信を容易くすることができる。通信インターフェース722の例としては、限定はしないが、有線ネットワークインターフェース(ネットワークインターフェースカードなど)、無線ネットワークインターフェース(無線ネットワークインターフェースカードなど)、モデム、および任意の他の適切なインターフェースが挙げられる。少なくとも1つの実施形態では、通信インターフェース722は、インターネットなどのネットワークへの直接のリンクを介して遠隔サーバへの直接的な接続を提供することができる。また、通信インターフェース722は、そのような接続を、例えばローカルエリアネットワーク(イーサネットネットワークなど)、パーソナルエリアネットワーク、電話もしくはケーブルネットワーク、セルラ電話接続、衛星データ接続、または任意の他の適切な接続を介して間接的に提供することもできる。
【0052】
いくつかの実施形態では、通信インターフェース722は、外部バスまたは通信チャネルを介して計算システム710と1つまたは複数の追加のネットワークまたは記憶装置との間の通信を容易くするように構成されたホストアダプタを表すこともある。ホストアダプタの例としては、限定はしないが、SCSIホストアダプタ、USBホストアダプタ、IEEE1394ホストアダプタ、SATAおよびeSATAホストアダプタ、ATAおよびPATAホストアダプタ、ファイバチャネルインターフェースアダプタ、イーサネットアダプタなどが挙げられる。また、通信インターフェース722は、計算システム710が、分散コンピューティングまたは遠隔コンピューティングに従事できるようにすることもできる。例えば、通信インターフェース722は、命令を実行するために、遠隔装置から命令を受信する、または遠隔装置に命令を送信することができる。いくつかの実施形態では、通信インターフェース722は、単独で、または他の要素と組み合わせて、本明細書で開示する訓練、展開、識別、調整、複製、修正、再訓練、および使用ステップの1つまたは複数を実施することができ、および/またはそれらを実施するための手段であってよい。また、通信インターフェース722は、本開示に記載する他のステップおよび機能を実施するために使用することもでき、および/またはそれらを実施するための手段であってもよい。
【0053】
図7に示されるように、計算システム710は、ディスプレイアダプタ726を介して通信インフラストラクチャ712に結合された少なくとも1つのディスプレイ装置724を含むこともある。ディスプレイ装置724は、ディスプレイアダプタ726によって転送された情報を視覚的に表示することができる任意の種類または形態の装置を全般的に表す。同様に、ディスプレイアダプタ726は、ディスプレイ装置724上に表示するために通信インフラストラクチャ712から(または当技術分野で知られているフレームバッファから)グラフィック、テキスト、および他のデータを転送するように構成された任意の種類または形態の装置を全般的に表す。
【0054】
図7に示されるように、例示的な計算システム710は、入力インターフェース730を介して通信インフラストラクチャ712に結合された少なくとも1つの入力装置728を含むこともできる。入力装置728は、コンピュータまたは人によって生成された入力を例示的な計算システム710に提供することができる任意の種類または形態の入力装置を全般的に表す。入力装置728の例としては、限定はしないが、キーボード、ポインティング装置、音声認識装置、または任意の他の入力装置が挙げられる。少なくとも1つの実施形態では、入力装置728は、単独で、または他の要素と組み合わせて、本明細書で開示する訓練、展開、識別、調整、複製、修正、再訓練、および使用ステップの1つまたは複数を実施することができ、および/またはそれらを実施するための手段であってよい。また、入力装置728は、本開示に記載する他のステップおよび機能を実施するために使用することもでき、および/またはそれらを実施するための手段であってもよい。
【0055】
図7に示されるように、例示的な計算システム710は、記憶インターフェース734を介して通信インフラストラクチャ712に結合された主記憶装置732およびバックアップ記憶装置733を含むこともできる。記憶装置732および733は、データおよび/または他のコンピュータ可読命令を記憶することができる任意の種類または形態の記憶装置または媒体を全般的に表す。例えば、記憶装置732および733は、磁気ディスクドライブ(例えばいわゆるハードドライブ)、フロッピーディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブなどでよい。記憶インターフェース734は、記憶装置732および733と計算システム710の他の構成要素との間でデータを転送するための任意の種類または形態のインターフェースまたは装置を全般的に表す。一例では、
図1からのデータベース120が主記憶装置732に記憶されることがある。
【0056】
いくつかの実施形態では、記憶装置732および733は、コンピュータソフトウェア、データ、または他のコンピュータ可読情報を記憶するように構成された着脱可能な記憶ユニットからの読み出しおよび/またはそのような記憶ユニットへの書き込みを行うように構成されることがある。適切な着脱可能な記憶ユニットの例としては、限定はしないが、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリ装置などが挙げられる。また、記憶装置732および733は、コンピュータソフトウェア、データ、または他のコンピュータ可読命令を計算システム710にロードできるようにするための他の同様の構造または装置を含むこともできる。例えば、記憶装置732および733は、ソフトウェア、データ、または他のコンピュータ可読情報の読み出しおよび書き込みを行うように構成されることがある。また、記憶装置732および733は、計算システム710の一部でもよく、または他のインターフェースシステムによってアクセスされる別個の装置でもよい。
【0057】
いくつかの実施形態では、記憶装置732および733は、例えば、単独で、または他の要素と組み合わせて、本明細書で開示する訓練、展開、識別、調整、複製、修正、再訓練、および使用ステップの1つまたは複数を実施するために使用することができ、および/またはそれらを実施するための手段であってよい。また、記憶装置732および733は、本開示に記載する他のステップおよび機能を実施するために使用することもでき、および/またはそれらを実施するための手段であってもよい。
【0058】
多くの他の装置またはサブシステムを計算システム710に接続することができる。逆に、
図7に示される構成要素および装置は、本願で説明および/または図示する実施形態を実施するためにすべて揃っていなければならないわけではない。また、上で言及した装置およびサブシステムは、
図7に示されるのとは異なる方法で相互接続されることもある。また、計算システム710は、任意の数のソフトウェア、ファームウェア、および/またはハードウェア構成を採用することができる。例えば、本明細書で開示する例示的実施形態の1つまたは複数を、コンピュータ可読媒体上にコンピュータプログラム(コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、またはコンピュータ制御論理とも呼ぶ)として符合化することができる。語句「コンピュータ可読媒体」は、コンピュータ可読命令を記憶または担持することができる任意の形態の装置、担体、または媒体を全般的に表す。コンピュータ可読媒体の例としては、限定はしないが、搬送波など伝送型媒体や、物理的媒体、例えば磁気記憶媒体(例えばハードディスクドライブおよびフロッピーディスク)、光記憶媒体(例えばCD−ROMまたはDVD−ROM)、電子記憶媒体(例えばソリッドステートドライブおよびフラッシュ媒体)、および他の配信システムが挙げられる。
【0059】
コンピュータプログラムを含むコンピュータ可読媒体は、計算システム710にロードすることができる。次いで、コンピュータ可読媒体に記憶されたコンピュータプログラムの全体または一部を、システムメモリ716、および/または記憶装置732および733の様々な部分に記憶することができる。プロセッサ714によって実行されるとき、計算システム710にロードされたコンピュータプログラムは、本願で説明および/または図示する1つまたは複数の例示的実施形態の機能をプロセッサ714に実施させることができ、および/またはプロセッサ714を、そのような機能を実施するための手段にすることができる。追加または代替として、本願で説明および/または図示する例示的実施形態の1つまたは複数は、ファームウェアおよび/またはハードウェアの形で実装することができる。例えば、計算システム710は、本明細書で開示する例示的実施形態の1つまたは複数を実装するように適合された特定用途向け集積回路(ASIC)として構成することができる。
【0060】
図8は、クライアントシステム810、820、および830、ならびにサーバ840および845をネットワーク850に結合させることができる例示的なネットワークアーキテクチャ800のブロック図である。クライアントシステム810、820、および830は、
図7の例示的な計算システム710など、任意の種類または形態の計算装置またはシステムを全般的に表す。一例では、クライアントシステム810は、
図1からのシステム100を含むことができる。
【0061】
同様に、サーバ840および845は、様々なデータベースサービスを提供するように、および/または何らかのソフトウェアアプリケーションを実行するように構成された、アプリケーションサーバやデータベースサーバなどの計算装置またはシステムを全般的に表す。ネットワーク850は、例えばイントラネット、ワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)、パーソナルエリアネットワーク(PAN)、またはインターネットを含めた任意の遠隔通信ネットワークまたはコンピュータネットワークを全般的に表す。
【0062】
図8に示されるように、1つまたは複数の記憶装置860(1)〜(N)をサーバ840に直接取り付けることができる。同様に、1つまたは複数の記憶装置870(1)〜(N)をサーバ845に直接取り付けることができる。記憶装置860(1)〜(N)および870(1)〜(N)は、データおよび/または他のコンピュータ可読命令を記憶することができる任意の種類または形態の記憶装置または媒体を全般的に表す。いくつかの実施形態では、記憶装置860(1)〜(N)および記憶装置870(1)〜(N)は、NFS、SMB、またはCIFSなど様々なプロトコルを使用してサーバ840および845と通信するように構成されたネットワークアタッチストレージ(NAS)装置を表すことがある。
【0063】
また、サーバ840および845が、ストレージエリアネットワーク(SAN)ファブリック880に接続されることもある。SANファブリック880は、複数の記憶装置間の通信を容易くすることができる任意の種類または形態のコンピュータネットワークまたはアーキテクチャを全般的に表す。SANファブリック880は、サーバ840および845と複数の記憶装置890(1)〜(N)および/またはインテリジェントストレ−ジアレイ895との間の通信を容易くすることができる。また、SANファブリック880は、ネットワーク850ならびにサーバ840および845を介するクライアントシステム810、820、および830と記憶装置890(1)〜(N)および/またはインテリジェントストレ−ジアレイ895との間の通信を容易くすることもでき、それにより、装置890(1)〜(N)およびアレイ895は、クライアントシステム810、820、および830へのローカル接続装置のように見える。記憶装置860(1)〜(N)および記憶装置870(1)〜(N)と同様に、記憶装置890(1)〜(N)およびインテリジェントストレ−ジアレイ895は、データおよび/または他のコンピュータ可読命令を記憶することができる任意の種類または形態の記憶装置または媒体を全般的に表す。
【0064】
いくつかの実施形態では、
図7の例示的な計算システム710を参照すると、
図7の通信インターフェース722などの通信インターフェースを使用して、各クライアントシステム810、820、および830とネットワーク850の間の接続性を提供することができる。クライアントシステム810、820、および830は、例えばウェブブラウザや他のクライアントソフトウェアを使用して、サーバ840および845上の情報にアクセスすることができることがある。そのようなソフトウェアは、クライアントシステム810、820、および830が、サーバ840、サーバ845、記憶装置860(1)〜(N)、記憶装置870(1)〜(N)、記憶装置890(1)〜(N)、またはインテリジェントストレ−ジアレイ895によってホストされたデータにアクセスできるようにすることができる。
図8は、データを交換するためのネットワーク(インターネットなど)の使用を示すが、本願で説明および/または図示する実施形態は、インターネットまたは任意の特定のネットワークベース環境に限定されない。
【0065】
少なくとも1つの実施形態では、本明細書で開示した1つまたは複数の例示的実施形態の全部または一部をコンピュータプログラムとして符合化することができ、サーバ840、サーバ845、記憶装置860(1)〜(N)、記憶装置870(1)〜(N)、記憶装置890(1)〜(N)、インテリジェントストレ−ジアレイ895、またはそれらの任意の組合せにロードし、それらによって実行することができる。また、本明細書で開示する1つまたは複数の例示的実施形態の全部または一部をコンピュータプログラムとして符合化し、サーバ840に記憶し、サーバ845によって実行し、ネットワーク850を介してクライアントシステム810、820、および830に分散することもできる。したがって、ネットワークアーキテクチャ800は、単独で、または他の要素と組み合わせて、本明細書で開示する訓練、展開、識別、調整、複製、修正、再訓練、および使用ステップの1つまたは複数を実施することができ、および/またはそれらを実施するための手段であってよい。また、ネットワークアーキテクチャ800は、本開示に記載する他のステップおよび機能を実施するために使用することもでき、および/またはそれらを実施するための手段であってもよい。
【0066】
上で詳述したように、計算システム710、および/またはネットワークアーキテクチャ800の1つまたは複数の構成要素は、単独で、または他の要素と組み合わせて、偽陽性を減少させるために複数のインラインヒューリスティックを使用するための例示的な方法の1つまたは複数のステップを実施することができ、および/またはそれらを実施するための手段であってよい。一例では、そのような方法は、1)1組の訓練データを使用して第1のヒューリスティックを訓練するステップと、2)第1のヒューリスティックを展開するステップと、3)展開中の第1のヒューリスティックによって生成された偽陽性を識別するステップと、4)第1のヒューリスティックによって生成された偽陽性を含むように訓練データを修正するステップと、5)修正された訓練データを使用して第2のヒューリスティックを作成するステップと、6)第1のヒューリスティックと第2のヒューリスティックの両方を展開するステップと、次いで7)第1のヒューリスティックと第2のヒューリスティックの両方を順次に1組のフィールドデータに適用するステップとを含む。
【0067】
いくつかの例では、この方法は、展開中の第1のヒューリスティックによって生成された真陽性を識別するステップも含むことがある。この例では、訓練データを修正するステップは、展開中の第1のヒューリスティックによって生成された真陽性も含むように訓練データを修正するステップを含むことができる。一例では、第1および第2のヒューリスティックは、マルウェア検出決定木などマルウェア検出ヒューリスティックを表すことがある。
【0068】
いくつかの実施形態では、修正された訓練データを使用して第2のヒューリスティックを作成するステップは、第1のヒューリスティックを作成するために使用された機械学習技法を修正された訓練データに適用するステップを含むことができる。さらに、第1のヒューリスティックと第2のヒューリスティックの両方を順次にフィールドデータに適用するステップは、第1のヒューリスティックをフィールドデータに適用するステップと、次いで第1のヒューリスティックを適用した後に、第2のヒューリスティックをフィールドデータに適用するステップとを含むことがある。
【0069】
一例では、展開中の第1のヒューリスティックによって生成された偽陽性を識別するステップが、第1のヒューリスティックをフィールドデータに適用したときに生成された偽陽性を識別するステップを含むことがある。さらに、第2のヒューリスティックを展開するステップは、第2のヒューリスティックをフィールド試験する前にそれを展開するステップを含むことがある。
【0070】
前述の開示では、特定のブロック図、流れ図、および例を使用して様々な実施形態を記載してきたが、本願で説明および/または図示した各ブロック図の構成要素、流れ図のステップ、操作、および/または構成要素は、多様なハードウェア構成、ソフトウェア構成、またはファームウェア構成(またはそれらの任意の組合せ)を使用して、個別に、および/またはまとめて実装することができる。さらに、他の構成要素に含まれた構成要素の開示はどれも、同じ機能を実現するために多くの他のアーキテクチャを実装することができるので、例示的な性質のものとみなすべきである。
【0071】
本願で説明および/または図示したプロセスパラメータおよびステップのシーケンスは、単に例として提示したものであり、望みに応じて変えることができる。例えば、本明細書で図示および/または説明したステップは、特定の順序で図示または論述していることがあるが、これらのステップは、必ずしも図示または論述した順序で行う必要はない。また、本願で説明および/または図示した様々な例示的な方法は、本願で説明または図示したステップの1つまたは複数を省くこともでき、あるいは開示したステップに加えて追加のステップを含むこともできる。
【0072】
様々な実施形態を、完全に機能する計算システムの文脈で本願で説明および/または図示してきたが、これらの例示的実施形態の1つまたは複数は、実際に分散を行うために使用されるコンピュータ可読媒体の特定の種類には関係なく多様な形態でプログラム製品として分散させることができる。また、本明細書で開示する実施形態は、特定のタスクを実施するソフトウェアモジュールを使用して実装することもできる。これらのソフトウェアモジュールは、コンピュータ可読記憶媒体上または計算システム内に記憶されることがあるスクリプト、バッチ、または他の実行可能なファイルを含むことがある。いくつかの実施形態では、これらのソフトウェアモジュールは、本明細書で開示する例示的実施形態の1つまたは複数を実施するように計算システムを構成することができる。
【0073】
さらに、本明細書で述べるモジュールの1つまたは複数は、データ、物理的装置、および/または物理的装置の表現を、ある形態から別の形態に変えることがある。例えば、調整モジュール110は、訓練データ122を修正し、次いでそれ(例えば修正された訓練データ402)をデータベース120に記憶することによって、データベース120のプロパティまたは特性を変えることができる。
【0074】
前述の説明は、本明細書に開示する例示的実施形態の様々な態様を当業者が最も良く利用できるように提示した。この例示的な説明は、網羅的なものとは意図されておらず、また開示した任意の厳密な形態に限定されるものとも意図されていない。本開示の精神および範囲から逸脱することなく、多くの修正形態および変形形態が可能である。本明細書で開示した実施形態は、すべての点で例示とみなされるべきであり、限定とみなされるべきではない。本開示の範囲を決定するに当たっては、添付の特許請求の範囲およびそれらの均等箇所を参照すべきである。
【0075】
特に断りのない限り、本明細書および特許請求の範囲で使用する単数形は、「少なくとも1つ」を意味するものと解釈すべきである。さらに、使いやすいように、本明細書および特許請求の範囲で使用する語「含む」および「有する」は、語「備える」と交換可能であり、同じ意味を有するものとする。