(57)【要約】      （修正有）【課題】悪意のあるファイルを検出するための方法及びシステムを提供する。【解決手段】方法は、ファイルの実行中の挙動データに基づいて特徴ベクトルを形成する工程と、パラメータを計算するために訓練されたモデルを使用して、特徴ベクトルに基づいてパラメータを計算する工程と、を実行する。パラメータは、ファイルに悪意がある確率を示す悪意性の程度と、ファイルに悪意があると明確に証明される確率を示す安全性の限界程度とを含む。連続して計算された程度の集合は、所定の時間法則によって表される。さらに、悪意性の程度および安全性の限界程度が所定の基準を満たす場合に、ファイルに悪意があると判定する工程を含む。基準は、悪意性の程度と安全性の限界程度との間に確立する相関性に従ってファイルを分類するためのルールである。【選択図】図１
2020115320.tif 000002
【特許請求の範囲】
【請求項１】
悪意あるファイルを検出するための方法であって、
コンピュータシステム内でのファイルの実行中、前記ファイルを監視する工程と、
前記ファイルの前記実行中、挙動データに基づいて、特徴ベクトルを形成する工程であって、
前記特徴ベクトルの特徴は、前記挙動データを特徴づけ、
前記特徴ベクトルは、１組の数の形をとる前記挙動データの畳み込みを表す、
工程と、
パラメータを計算するために訓練されたモデルを使用して、前記特徴ベクトルに基づいてパラメータを計算する工程であって、
前記パラメータは、ｉ）前記ファイルに悪意がある確率を示す悪意性の程度と、ｉｉ）前記ファイルが安全であると明確に証明される確率を示す安全性の限界程度とを含み、
連続して計算された程度の集合は、所定の時間法則によって表される、
工程と、
前記悪意性の程度および前記安全性の限界程度が所定の基準を満たす場合、前記ファイルに悪意があると判定する工程であって、
前記基準は、前記悪意性の程度と前記安全性の限界程度との間に確立する相関性に従って前記ファイルを分類するためのルールである、工程と、
を含む、方法。
【請求項２】
パラメータを計算するための前記モデルは、少なくとも１つの安全なファイルと１つの悪意あるファイルに対して行われる機械学習法によって訓練される、請求項１に記載の方法。
【請求項３】
前記機械学習法は、決定木に基づいた勾配ブースティング、決定木、ｋ近傍法、およびサポートベクトル法のうちの１つである、請求項２に記載の方法。
【請求項４】
前記挙動データは、少なくとも、
前記ファイルによって実行されるコマンド、前記コマンドに送信される属性、および戻り値、
実行対象の前記ファイルによって変更されるランダムアクセスメモリ（Random  Access  Memory：ＲＡＭ）領域に関するデータ、または、
前記ファイルの静的パラメータである、
請求項１に記載の方法。
【請求項５】
前記悪意性の程度に基づいて前記安全性の限界程度を計算する工程をさらに含み、
前記安全性の限界程度は、前記ファイルの起動時に、前記ファイルの静的パラメータ分析に基づいて計算する、
請求項１に記載の方法。
【請求項６】
パラメータを計算するために訓練された前記モデルは、前記挙動データに依存する、前記ファイルの前記悪意性の程度および前記ファイルの前記安全性の限界程度を計算するための１組のルールである、請求項１に記載の方法。
【請求項７】
前記時間法則は、本質的に単調である、請求項１に記載の方法。
【請求項８】
前記悪意性の程度と前記安全性の限界程度の間の相関性は、少なくとも、
前記悪意性の程度と悪意性の境界条件の間の隔たりの所定閾値からの差、
前記悪意性の程度と前記境界条件の間の所与の時間間隔に結びつけられる領域の所定閾値からの差、または、
時間関数として前記悪意性の程度および前記悪意性の境界条件を表す曲線の相互増加率の所定値からの差である、
請求項１に記載の方法。
【請求項９】
パラメータを計算するための前記モデルを、計算した前記悪意性の程度および前記安全性の限界程度の分析に基づいて、さらに再訓練し、前記再訓練の結果、前記悪意性の程度および前記安全性の限界程度を表す前記時間法則における変化は、前記法則に基づいて得られた値の間の相関性が最大に向かう傾向があることを意味する、請求項１に記載の方法。
【請求項１０】
パラメータを計算するための前記モデルを再訓練し、前記再訓練の結果、前記モデルを使用すると、後に形成される前記基準によって、少なくとも、
前記悪意性の程度および前記安全性の限界程度を判定する精度が、パラメータ計算用には訓練されていないモデルを使用する場合より高く、
計算資源の利用率が、パラメータ計算用には訓練されていないモデルを使用する場合より低くなる、
ことが確実となる、請求項１に記載の方法。
【請求項１１】
悪意あるファイルを検出するためのシステムであって、
前記システムは、ハードウェアプロセッサを備え、
前記ハードウェアプロセッサは、
コンピュータシステム内でのファイルの実行中、前記ファイルを監視することと、
前記ファイルの前記実行中、挙動データに基づいて、特徴ベクトルを形成することであって、
前記特徴ベクトルの特徴は、前記挙動データを特徴づけ、
前記特徴ベクトルは、１組の数の形をとる前記挙動データの畳み込みを表す、ことと、
パラメータを計算するために訓練されたモデルを使用して、前記特徴ベクトルに基づいてパラメータを計算することであって、
前記パラメータは、ｉ）前記ファイルに悪意がある確率を示す悪意性の程度と、ｉｉ）前記ファイルが安全であると明確に証明される確率を示す安全性の限界程度とを含み、    連続して計算された程度の集合は、所定の時間法則によって表される、ことと、
前記悪意性の程度および前記安全性の限界程度が所定の基準を満たす場合、前記ファイルに悪意があると判定することであって、
前記基準は、前記悪意性の程度と前記安全性の限界程度との間に確立する相関性に従って前記ファイルを分類するためのルールである、ことと、
を行うハードウェアプロセッサである、システム。
【請求項１２】
パラメータを計算するための前記モデルは、少なくとも１つの安全なファイルと１つの悪意あるファイルに対して行われる機械学習法によって訓練される、請求項１１に記載のシステム。
【請求項１３】
前記機械学習法は、決定木に基づいた勾配ブースティング、決定木、ｋ近傍法、およびサポートベクトル法のうちの１つである、請求項１２に記載のシステム。
【請求項１４】
前記挙動データは、少なくとも、
前記ファイルによって実行されるコマンド、前記コマンドに送信される属性、および戻り値、
実行対象の前記ファイルによって変更されるランダムアクセスメモリ（Random  Access  Memory：ＲＡＭ）領域に関するデータ、または、
前記ファイルの静的パラメータである、
請求項１１に記載のシステム。
【請求項１５】
前記ハードウェアプロセッサは、さらに、前記悪意性の程度に基づいて前記安全性の限界程度を計算し、
前記安全性の限界程度は、前記ファイルの起動時に、前記ファイルの静的パラメータ分析に基づいて計算される、
請求項１１に記載のシステム。
【請求項１６】
パラメータを計算するために訓練された前記モデルは、前記挙動データに依存する、前記ファイルの前記悪意性の程度および前記ファイルの前記安全性の限界程度を計算するための１組のルールである、請求項１１に記載のシステム。
【請求項１７】
前記悪意性の程度と前記安全性の限界程度の間の相関性は、少なくとも、
前記悪意性の程度と悪意性の境界条件の間の隔たりの所定閾値からの差、
前記悪意性の程度と前記境界条件の間の所与の時間間隔に結びつけられる領域の所定閾値からの差、または、
時間関数として前記悪意性の程度および前記悪意性の境界条件を表す曲線の相互増加率の所定値からの差である、
請求項１１に記載のシステム。
【請求項１８】
パラメータを計算するための前記モデルを、計算した前記悪意性の程度および前記安全性の限界程度の分析に基づいて、さらに再訓練し、前記再訓練の結果、前記悪意性の程度および前記安全性の限界程度を表す前記時間法則における変化は、前記法則に基づいて得られる値の間の相関性が最大に向かう傾向があることを意味する、請求項１１に記載のシステム。
【請求項１９】
パラメータを計算するための前記モデルを再訓練し、前記再訓練の結果、前記モデルを使用すると、後に形成される前記基準によって、少なくとも、
前記悪意性の程度および前記安全性の限界程度を判定する精度が、パラメータ計算用には訓練されていないモデルを使用する場合より高く、
計算資源の利用率が、パラメータ計算用には訓練されていないモデルを使用する場合より低くなる、
ことが確実となる、請求項１１に記載のシステム。
【請求項２０】
悪意あるファイルを検出するための命令を格納する、非一時的なコンピュータ可読媒体であって、前記命令は、
コンピュータシステム内でのファイルの実行中、前記ファイルを監視することと、
前記ファイルの前記実行中、挙動データに基づいて、特徴ベクトルを形成することであって、
前記特徴ベクトルの特徴は、前記挙動データを特徴づけ、
前記特徴ベクトルは、１組の数の形をとる前記挙動データの畳み込みを表す、ことと、
パラメータを計算するために訓練されたモデルを使用して、前記特徴ベクトルに基づいてパラメータを計算することであって、
前記パラメータは、ｉ）前記ファイルに悪意がある確率を示す悪意性の程度と、ｉｉ）前記ファイルが安全であると明確に証明される確率を示す安全性の限界程度とを含み、    連続して計算された程度の集合は、所定の時間法則によって表される、ことと、
前記悪意性の程度および前記安全性の限界程度が所定の基準を満たす場合、前記ファイルに悪意があると判定することであって、
前記基準は、前記悪意性の程度と前記安全性の限界程度との間に確立する相関性に従って前記ファイルを分類するためのルールである、ことと、
を含む命令である、非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ウイルス対策技術に関し、特に悪意あるファイルを検出するためのシステムおよび方法に関する。
【背景技術】
【０００２】
過去１０年間におけるコンピュータ技術の急成長、および様々なコンピュータデバイス（パーソナルコンピュータ、ノート型コンピュータ、タブレット、スマートフォンなど）の広範囲にわたる使用は、多様な領域のアクティビティでのコンピュータデバイスの使用や多数のタスク（インターネットサーフィンから銀行口座振替および電子文書トラフィックまで）に対して強力な刺激剤となっている。コンピュータデバイスの数やコンピュータデバイス上を走るソフトウェアの量が増加するのと並行して、悪意あるプログラムの数もまた急速に増加している。
【０００３】
現在、膨大な種類の悪意あるプログラムが存在する。その中には、個人データや機密データ（ログイン情報、パスワード、銀行取引の詳細、電子文書など）をユーザのデバイスから盗み取る、悪意あるプログラムもある。その他、分散型サービス妨害（Distributed  Denial  of  Service：ＤＤｏＳ）など攻撃するために、または、他のコンピュータもしくはコンピュータネットワークに対して総当たりの方法によってパスワードを選別するために、ユーザのデバイスから、いわゆるボットネットを形成する、悪意あるプログラムもある。さらにその他、煩わしい広告を介するユーザへの有料コンテンツ、有料定期購読、電話番号へのＳＭＳの送付などを提供する、悪意あるプログラムもある。
【０００４】
ウイルス感染対策として知られる特殊プログラムは、悪意あるプログラムの撲滅に使用され、これには、悪意あるプログラムの検出、感染の予防、および悪意あるプログラムに感染したコンピュータデバイスの作業能力の回復が含まれる。アンチウイルスプログラムは、あらゆる種類の悪意あるプログラムを検出するために、様々な技術を使用する。すなわち、
・静的分析。分析対象プログラムを構成するファイルに含まれるデータに基づく、悪意性についてのプログラムの分析。分析対象プログラムの作業を開始またはエミュレートすることは除く。静的分析中に、下記の分析を用いることができる。
・シグネチャ分析。悪意あるプログラムのシグネチャのデータベースから既知のコード（シグネチャ）と分析対象プログラムのコードの特定セグメントとの対応関係について検索する。
・ホワイトリストおよびブラックリスト。悪意あるプログラムのチェックサムのデータベース（ブラックリスト）、または安全なプログラムのチェックサムのデータベース（ホワイトリスト）において、分析対象プログラム（またはその一部）から計算したチェックサムについて検索する。
・動的分析。分析対象プログラムの作業を実行またはエミュレートする過程で得られたデータに基づく、悪意性についてのプログラムの分析。動的分析中に、下記の分析を用いることができる。
・ヒューリスティック分析。分析対象プログラムの作業のエミュレーション、（ＡＰＩ関数の呼び出し、送信されたパラメータ、分析対象プログラムのコードセグメントなどに関するデータを含む）エミュレーションログの作成、および作成されたログのデータと悪意あるプログラムの挙動シグネチャのデータベースからのデータとの間の対応関係についての検索。
・プロアクティブ保護。開始された分析対象プログラムのＡＰＩ関数の呼び出しのインターセプト、（ＡＰＩ関数の呼び出し、送信されたパラメータ、分析対象プログラムのコードセグメントなどに関するデータを含む）分析対象プログラムの挙動ログの作成、および作成されたログのデータと悪意あるプログラムの呼び出しのデータベースからのデータとの間の対応関係についての検索。
【０００５】
静的分析および動的分析は、それぞれ、プラス面およびマイナス面を有する。静的分析においては、分析が行われるコンピュータデバイスのリソースに対する要求がより少なく、分析対象プログラムの実行またはエミュレーションを必要としないため、統計分析速度は速いが、有効性は低い。すなわち、静的分析では、悪意あるプログラムの検出率がより低く、フォルスアラーム（すなわち、アンチウイルスプログラムによって分析されたファイルが、安全なものであるにもかかわらず、悪意あるものとして判定されてしまう）の可能性はより高い。動的分析は、分析対象プログラムの作業の実行またはエミュレーション中に得られたデータを使用するため、分析速度は遅く、分析が行われるコンピュータデバイスのリソースに対する要求がより大きいが、有効性は高い。最近のアンチウイルスプログラムは、静的分析および動的分析の両方の要素を含む包括的な分析を用いる。
【０００６】
情報セキュリティにおける最近の基準では、悪意あるプログラム（特に新しいプログラム）に対する動作反応が要求されているため、悪意あるプログラムの自動検出手段が主に注目されている。この自動検出手段を有効に動作させるために、人工知能の要素や、悪意あるプログラムを検出するためのモデル（すなわち、悪意あるファイルを表す１組の入力データに基づいてファイルの悪意性について判定をするためのルール）による様々な機械学習法が使用されることが多く、これによって、既知の悪意あるプログラムまたは既知の悪意ある挙動を有する悪意あるプログラムだけでなく、未知のまたはほとんど研究されていない悪意ある挙動を有する、新しい悪意あるプログラムを有効に検出することが可能になるとともに、新しい悪意あるプログラムを検出するための動作上の適合（学習）が可能になる。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
既知の技術は、既知の悪意あるファイルの特徴に類似する特定の属性（すなわち、グラフィックインターフェースの存在、データの暗号化、コンピュータネットワークを介したデータ送信などの、特定グループのファイルからファイルの特定の特徴を表すデータ）を有する悪意あるファイルを検出するのに対処するが、これらの技術は、（類似の挙動であっても）既知の悪意あるファイルの特徴とは異なる特徴を有する悪意あるファイルを検出することはできない。さらに、上述した技術は、モデルを試験および再訓練する、ならびに（上記試験の結果に依存して）特徴を形成および改良するなど、モデルを用いて機械学習する態様を開示していない。
【０００８】
本開示によれば、悪意あるファイルを検出するという課題を解決することができる。
【課題を解決するための手段】
【０００９】
本開示は、ファイルをアンチウイルススキャニングするように設計されている。
【００１０】
本開示の多くの例示的な技術結果のうちの１つは、悪意性に対するファイルスキャニングの質を高めることを含む。
【００１１】
さらに、本開示の別の例示的な技術結果は、悪意性に対するファイルスキャニングを実施するのに使用されるコンピュータリソースを減らすことを含む。
【００１２】
上記の結果は、悪意あるファイルを検出するための方法、システム、およびコンピュータプログラム製品を使用することで達成される。
【００１３】
例示的な方法は、コンピュータシステム内でのファイルの実行中、上記ファイルを監視する工程と、上記ファイルの実行中、挙動データに基づいて、特徴ベクトルを形成する工程であって、上記特徴ベクトルの特徴は上記挙動データを特徴づけ、上記特徴ベクトルは１組の数の形をとる上記挙動データの畳み込みを表す、工程と、パラメータを計算するために訓練されたモデルを使用して、上記特徴ベクトルに基づいてパラメータを計算する工程であって、上記パラメータは、ｉ）上記ファイルに悪意がある確率を示す悪意性の程度と、ｉｉ）上記ファイルに悪意があると明確に証明される確率を示す安全性の限界程度とを含み、連続して計算された程度の集合は、所定の時間法則によって表される、工程と、上記悪意性の程度および上記安全性の限界程度が所定の基準に達する場合、上記ファイルに悪意があると判定する工程であって、上記基準は、上記悪意性の程度と上記安全性の限界程度との間に確立する相関性に従って上記ファイルを分類するためのルールである、工程と、を含む。
【００１４】
別の態様において、パラメータを計算するための上記モデルは、少なくとも１つの安全なファイルと１つの悪意あるファイルに対して行われる機械学習法によって訓練される。
【００１５】
別の態様において、上記機械学習法は、決定木に基づいた勾配ブースティング、決定木、ｋ近傍法、およびサポートベクトル法のうちの１つである。
【００１６】
別の態様において、上記挙動データは、少なくとも、ファイルによって実行されるコマンド、上記コマンドに送信される属性、および戻り値か、実行対象の上記ファイルによって変更されるランダムアクセスメモリ（Random  Access  Memory：ＲＡＭ）領域に関するデータか、または上記ファイルの静的パラメータである。
【００１７】
別の態様において、上記方法は、上記悪意性の程度に基づいて上記安全性の限界程度を計算する工程をさらに含み、上記安全性の限界程度は、上記ファイルの起動時に、ファイルの静的パラメータの分析に基づいて計算する。
【００１８】
別の態様において、パラメータを計算するために訓練された上記モデルは、上記挙動データに依存する、上記ファイルの上記悪意性の程度および上記ファイルの上記安全性の限界程度を計算するための１組のルールである。
【００１９】
別の態様において、上記時間法則は、本質的に単調である。
【００２０】
別の態様において、上記悪意性の程度と上記安全性の限界程度の間の相関性は、少なくとも、上記悪意性の程度と悪意性の境界条件の間の隔たりの所定閾値からの差か、上記悪意性の程度と上記境界条件の間の所与の時間間隔に結びつけられる上記領域の所定閾値からの差か、または、時間関数として上記悪意性の程度および上記悪意性の境界条件における変化を表す曲線の相互増加率の所定値からの差である。
【００２１】
別の態様において、パラメータを計算するための上記モデルを、計算した上記悪意性の程度および上記安全性の限界程度の分析に基づいて、さらに再訓練し、上記再訓練の結果、上記悪意性の程度および上記安全性の限界程度を表す上記時間法則における変化は、上記法則に基づいて得られた上記値の間の相関性が最大に向かう傾向があることを意味する。
【００２２】
別の態様において、パラメータを計算するための上記モデルを再訓練し、その結果、上記モデルを使用すると、後に形成される上記基準によって、少なくとも、上記悪意性の程度および上記安全性の限界程度を判定する精度が、パラメータの計算用には訓練されていないモデルを使用する場合より高い、または、計算資源の利用率が、パラメータの計算用には訓練されていないモデルを使用する場合より低くなる、ことが確実となる。
【００２３】
別の態様において、悪意あるファイルを検出するためのシステムを提供する。上記システムは、ハードウェアプロセッサを備え、上記ハードウェアプロセッサは、コンピュータシステム内でのファイルの実行中、上記ファイルを監視し、上記ファイルの上記実行中、挙動データに基づいて、特徴ベクトルを形成し、パラメータを計算するために訓練されたモデルを使用して、上記特徴ベクトルに基づいてパラメータを計算し、上記悪意性の程度および上記安全性の限界程度が所定の基準に達する場合、上記ファイルに悪意があると判定する。上記特徴ベクトルの特徴は上記挙動データを特徴づけ、上記特徴ベクトルは１組の数の形をとる上記挙動データの畳み込みを表す。上記パラメータは、ｉ）上記ファイルに悪意がある確率を示す悪意性の程度と、ｉｉ）上記ファイルに悪意があると明確に証明される確率を示す安全性の限界程度とを含み、連続して計算された程度の集合は、所定の時間法則によって表される。上記基準は、上記悪意性の程度と上記安全性の限界程度との間に確立する相関性に従って上記ファイルを分類するためのルールである。
【００２４】
さらに別の態様において、本開示における上記方法および上記システムを実行するための命令を含む、非一時的なコンピュータ可読媒体を提供してもよい。
【００２５】
例示的な態様の上記簡略な概要は、本開示の基本的な理解を促進する。この概要は、全ての企図された態様の広範な概観ではなく、全ての態様の重要な要素または必須の要素を特定することを意図するものでもなく、本開示の任意または全ての態様の範囲を説明するものでもない。上述した目的を達成するために、本開示の１つ以上の態様は、特許請求の範囲において記載し、かつ、特に指摘する特徴を含む。
【図面の簡単な説明】
【００２６】
添付の図面は、本明細書に組み込まれ、本明細書の一部を構成し、本開示の１つ以上の例示的な態様を示し、詳細な説明とともに、上記態様の原理および実施形態を説明する役割を果たす。
【００２７】
【図１】図１は、本開示の例示的な態様に係る、悪意あるファイルを検出するためのモデルによる機械学習のシステムの構成図である。
【図２】図２は、本開示の例示的な態様に係る、悪意あるファイルを検出するためのモデルによる機械学習法の構成図である。
【図３】図３は、本開示の例示的な態様に係る、挙動パターンの数の関数としての、悪意性の程度の変化の動態例を示す。
【図４】図４は、本開示の例示的な態様に係る、挙動パターンの要素間の関係例を示す図である。
【図５】図５は、本開示の例示的な態様に係る、悪意あるファイルを検出するために訓練されたモデルを使用して、悪意あるファイルを検出するためのシステムの構成図である。
【図６】図６は、本開示の例示的な態様に係る、悪意あるファイルを検出するために訓練されたモデルを使用して、悪意あるファイルを検出するための方法の構成図である。
【図７】図７は、本開示の例示的な態様に係る、悪意あるファイルを検出するための方法の構成図である。
【図８】図８は、本開示の例示的な態様に係る、悪意あるファイルを検出するための方法の構成図である。
【図９】図９は、本開示の例示的な態様に係る、挙動パターンの数の関数としての、悪意性の程度と安全性の限界程度における変化の動態例を示す。
【図１０】図１０は、本開示の例示的な態様に係る、汎用コンピュータシステム、パーソナルコンピュータ、またはサーバの例を示す。
【発明を実施するための形態】
【００２８】
ファイルのアンチウイルススキャニングのためのシステム、方法、およびコンピュータプログラム製品に関連して、例示的な態様を本開示において説明する。当業者であれば、以下の説明は例示的なものにすぎず、本発明を限定することを意図するものではないことを理解するであろう。他の態様は、本開示の恩恵を受ける当業者には容易に示唆されるであろう。添付の図面に例示されている例示的な態様の実装を詳細に説明する。同じ参照符号は、可能な限り図面全体および以下の記載にわたって、同じものを表すために使用される。
【００２９】
以下の定義および概念は、本開示の様々な態様の説明全体にわたって用いられる。
【００３０】
悪意あるファイル。すなわち、その実行が、コンピュータ情報の不正な破壊、ブロッキング、変更、複製、またはコンピュータ情報を保護する方法の無効化に帰着することができることが知られているファイル。
【００３１】
実行対象ファイルの悪意ある挙動。すなわち、実行対象ファイルの実行中に行われることがあるアクション群であって、コンピュータ情報の不正な破壊、ブロッキング、変更、複製、またはコンピュータ情報を保護する方法の無効化に帰着することができることが知られているアクション群。
【００３２】
実行対象ファイルの悪意あるアクティビティ。すなわち、実行対象ファイルの悪意ある挙動に従って、上記ファイルによって行われるアクション群。
【００３３】
平均的なユーザのコンピュータデバイス。すなわち、事前に選択されるユーザ群のコンピュータデバイスの平均特性を有する仮説上（理論上）のコンピュータデバイスであって、平均的なユーザのコンピュータデバイス上におけるアプリケーションと同じアプリケーションが実行されるコンピュータデバイス。
【００３４】
コンピュータデバイスによって実行可能なコマンド。すなわち、１組の機械命令またはスクリプトの命令であって、コマンドパラメータまたは上記コマンドを表すパラメータとして知られる、上記命令のパラメータに基づいて、コンピュータデバイスによって実行可能な命令。
【００３５】
語彙分析（トークン化）。すなわち、出力識別列（以下、トークンと称する）を形成するために、入力文字列を、認識されたグループ（以下、語彙素と称する）にする分析的な構文解析のプロセス。
【００３６】
トークン。すなわち、語彙分析のプロセスにおいて語彙素から形成された識別列。
【００３７】
図１は、悪意あるファイルを検出するためのモデルによる機械学習のシステムの構成図である。
【００３８】
機械学習のためのシステムの構成図は、訓練選択肢準備モジュール１１１、挙動ログ形成モジュール１１２、挙動パターン形成モジュール１２１、畳み込み関数形成モジュール１２２、検出モデル作成モジュール１３１、検出モデル機械学習モジュール１３２、悪意性程度計算モジュール１４２、および資源管理モジュール１４３からなる。
【００３９】
システムの一態様において、検出用モデルによって機械学習する上記システムは、クライアントサーバアーキテクチャを有する。上記システムにおいては、訓練選択肢準備モジュール１１１、挙動ログ形成モジュール１１２、挙動パターン形成モジュール１２１、畳み込み関数形成モジュール１２２、検出モデル作成モジュール１３１、および検出モデル機械学習モジュール１３２は、サーバ側で作動し、挙動パターン形成モジュール１２１、悪意性程度計算モジュール１４２、および資源管理モジュール１４３は、クライアント側で作動する。
【００４０】
たとえば、クライアントは、パーソナルコンピュータ、ノートブック型コンピュータ、スマートフォンなどのユーザのコンピュータデバイスであってもよく、サーバは、ファイルの予備収集およびアンチウイルス分析、アンチウイルスレコードの作成などを実行するサーバの分散型システムのような、アンチウイルス会社のコンピュータデバイスであってもよい。その場合、悪意あるファイルを検出するためのモデルによる機械学習のシステムを使用して、クライアント側で悪意あるファイルを検出してもよく、それによって、クライアントのウイルスからの保護の有効性が向上する。
【００４１】
さらに別の例において、クライアントおよびサーバの両方が、アンチウイルス会社のコンピュータデバイスのみであってもよい。その場合、悪意あるファイルを検出するためのモデルによる機械学習のシステムを使用して、ファイルの自動アンチウイルス分析およびアンチウイルスレコードの作成を行い、それによって、アンチウイルス会社の作業の有効性が向上する。
【００４２】
訓練選択肢準備モジュール１１１は、以下のように設計される。
・ファイルの訓練の選択肢を形成する所定のルールに従って、ファイルのデータベースから少なくとも１つのファイルを選択し、その後、検出モデル機械学習モジュール１３２は、選択したファイルの分析に基づいて、検出モデルの訓練を実施する。
・挙動ログ形成モジュール１１２に選択したファイルを送信する。
【００４３】
システムの一態様において、少なくとも１つの安全なファイル、および１つの悪意あるファイルをファイルのデータベースに保存する。
【００４４】
たとえば、ファイルのデータベースにおいて、安全なファイルは、Ｗｉｎｄｏｗｓオペレーティングシステムのファイルであってもよく、悪意あるファイルは、バックドアのファイル、すなわち、データへの不正なアクセス、ならびにオペレーティングシステムおよび全体としてのコンピュータの遠隔操作を実行するアプリケーションであってもよい。さらに、機械学習法を使用して、上述したファイル上で訓練された、悪意あるファイルを検出するためのモデルは、上述したバックドアの機能性に類似する機能性を有する悪意あるファイルを、高い精度で検出することができる（上述した検出用モデルの訓練に使用されるファイルが多ければ多いほど、精度は高くなる）。
【００４５】
システムのさらに別の一態様において、ファイルのデータベースに、さらに、少なくとも、下記のファイルを追加して保存する。
・疑わしいファイル（リスクウェア）。すなわち、悪意性はないが、悪意あるアクションを実行することができるファイル。
・未知のファイル。すなわち、悪意性の判定がなされておらず、不明なままであるファイル（すなわち、安全ではない、悪意性がある、疑わしいなどのファイル）。
【００４６】
たとえば、ファイルのデータベースにおいて、疑わしいファイルが、（ＲＡｄｍｉｎなどの）遠隔管理、アーカイビング、（ＷｉｎＺｉｐなどの）データの暗号化などのためのアプリケーションのファイルであってもよい。
【００４７】
システムのさらに別の態様においては、ファイルのデータベースには、少なくとも、下記のファイルが保存されている。
・アンチウイルスウェブクローラによって収集されたファイル。
・ユーザによって送信されたファイル。
【００４８】
さらに、上記ファイルは、その後、上記ファイルの悪意性についての判定を行うために、ファイルの自動分析方法を用いることを含む、アンチウイルスの専門家によって分析される。
【００４９】
たとえば、ファイルのデータベースには、ファイルの悪意性を検査するために、ユーザがユーザ自身のコンピュータデバイスからアンチウイルス会社へ送信したファイルが保存されていることもある。その場合、送信されたファイルは、安全であっても、悪意があってもよく、上記安全なファイルおよび上記悪意あるファイルの数の間の分布は、上記ユーザのコンピュータデバイスに在る全ての安全なファイルおよび悪意あるファイルの数の分布に近い（すなわち、上記悪意あるファイルの数に対する上記安全なファイルの数の比は、上記ユーザのコンピュータデバイスに在る全ての悪意あるファイルの数に対する全ての安全なファイルの数の比と指定された閾値未満の量だけ異なる）。
【数１】
2020115320.tif 000003
【００５０】
ユーザが送信したファイル（すなわち、主観的に疑わしいとするファイル）とは異なり、疑わしいファイルおよび悪意あるファイルを検索するように設計されているアンチウイルスウェブクローラによって収集されたファイルには、大抵の場合、悪意があることが判明する。
【００５１】
システムのさらに別の態様において、以下の条件の少なくとも１つが、ファイルのデータベースからファイルを選択するための基準として用いられる。
・ファイルのデータベースから選択された安全なファイルと悪意あるファイルの分布は、平均的なユーザのコンピュータデバイス上に在る安全なファイルと悪意あるファイルの分布に対応する。
・ファイルのデータベースから選択された安全なファイルと悪意あるファイルの分布は、アンチウイルスウェブクローラを用いて収集した安全なファイルと悪意あるファイルの分布に対応する。
・ファイルのデータベースから選択されたファイルのパラメータは、平均的ユーザのコンピュータデバイス上に在るファイルのパラメータに対応する。
・選択されたファイルの数は、所定の値と一致するが、ファイル自体はランダムに選択される。
【００５２】
たとえば、ファイルのデータベースは、１００，０００個のファイルを含み、そのうちの４０％が安全なファイルであり、６０％が悪意あるファイルであるとする。ファイルのデータベースから、１５，０００個のファイル（ファイルのデータベースに保存されているファイルの総数の１５％）を選択すると、その結果、選択された安全なファイルと悪意あるファイルの分布は、平均的なユーザのコンピュータデバイス上に在る安全なファイルと悪意あるファイルの間の分布に対応し、９５対５となる。したがって、１４，２５０個の安全なファイル（安全なファイルの総数の３５．６３％）および７５０個の悪意あるファイル（悪意あるファイルの総数の１．２５％）がファイルのデータベースからランダムに選ばれる。
【００５３】
さらに別の例において、ファイルのデータベースは、１，２５０，０００個のファイルを含み、そのうちの９５％が安全なファイルであり、５％が悪意あるファイルであるとする。すなわち、ファイルのデータベースに保存されている安全なファイルと悪意あるファイルの分布は、平均的なユーザのコンピュータデバイス上にある安全なファイルと悪意あるファイルの分布に対応する。これらのファイルのうち、５，０００個のファイルがランダムに選ばれ、４，７５０個までのファイルが安全なファイルであり、２５０個までのファイルが悪意あるファイルであることが高い確率で判明する。
【００５４】
システムのさらに別の態様においては、ファイルのパラメータは、少なくとも、下記のとおりである。
・ファイルが安全であるか、悪意あるものであるか、潜在的に危険なものであるか、または、ファイルを実行したときのコンピュータシステムの挙動が判定されていないものかなどを特徴づける、ファイルの悪意性の程度。
・ファイルの実行中にコンピュータデバイスによって実行されるコマンドの数。
・ファイルのサイズ。
・ファイルを利用するアプリケーション。
【００５５】
たとえば、アプリケーション「Ａｄｏｂｅ  Ｆｌａｓｈ」によって実行可能であり、かつ、サイズが５ｋｂを超えない、「ＡｃｔｉｏｎＳｃｒｉｐｔ」言語のスクリプトであるファイルのデータベースから、悪意あるファイルが選択される。
【００５６】
システムのさらに別の態様においては、訓練選択肢準備モジュール１１１は、さらに下記のように設計される。
・ファイルの試験的な選択肢を形成する所定のルールに従って、ファイルのデータベースから少なくとも１つ以上のファイルを選択し、その後、検出モデル機械学習モジュール１３２が、選択されたファイルの分析に基づいて、訓練された検出モデルの検証を実行する。
・選択されたファイルを挙動ログ形成モジュール１１２へ送信する。
【００５７】
たとえば、ファイルのデータベースが７５，０００個のファイルを含み、そのうちの２０％が安全なファイルであり、８０％が悪意あるファイルであるとする。まず、ファイルのデータベースから１２，５００個のファイルが選択され、このうち、３０％が安全なファイルであり、７０％が悪意あるファイルである。その後、検出モデル機械学習モジュール１３２は、選択されたファイルの分析に基づいて検出モデルの訓練を実行する。その後、残りの６２，５００個のファイルから２，５００個のファイルが選択され、このうち、６０％が安全なファイルであり、４０％が悪意あるファイルである。その後、検出モデル機械学習モジュール１３２は、選択されたファイルの分析に基づいて訓練された検出モデルの検査を実行する。上記手法によって構築されたデータを、相互検証データセットと称する。
【００５８】
挙動ログ形成モジュール１１２は、下記のように設計される。
・少なくとも、下記の最中に、少なくとも１つの実行可能なコマンドをインターセプトする。
・受信したファイルの実行。
・受信したファイルの実行のエミュレーション。この場合、ファイルの実行のエミュレーションは、上記ファイルを開くこと（たとえば、インタープリタによってスクリプトを開くこと）を含む。
・インターセプトされた各コマンドに対して、上記コマンドを表す少なくとも１つのパラメータを決定する。
・インターセプトされたコマンドおよび上記のように決定されたパラメータに基づいて受信したファイルの挙動ログを形成する。その場合、上記挙動ログは、ファイルからインターセプトされたコマンド（以後、コマンドと称する）の全体を構成し、各コマンドは、上記のように決定された、上記コマンドを表す少なくとも１つのパラメータ（以後、パラメータと称する）に対応する。
【００５９】
たとえば、パスワードを収集し、コンピュータネットワークを介して上記パスワードを送信する悪意あるファイルを実行する間にインターセプトされたコマンド、および、上記コマンドに対して計算されたパラメータは、下記のようなものであってもよい。
CreateFile,  ‘c:\windows\system32\data.pass’
ReadFile,  0x14ea25f7,  0xf000
connect,  http://stealpass.com
send,  0x14ea25f7,  0xf000
【００６０】
システムの一態様において、ファイルからのコマンドのインターセプトは、少なくとも、
・特殊なドライバ、
・デバッガ、
・ハイパーバイザ、
を使用して実行する。
【００６１】
たとえば、ファイル実行中のコマンドのインターセプト、および上記コマンドのパラメータの決定は、ＷｉｎＡＰＩ関数のエントリーポイントを継いでインターセプトを利用するドライバを用いて行われる。
【００６２】
さらに別の例において、ファイルの作動のエミュレーション中におけるコマンドのインターセプトは、上記エミュレーションを実行し、エミュレートされる必要があるコマンドのパラメータを決定するエミュレータ手段によって直接行われる。
【００６３】
さらに別の例において、仮想機械上でのファイルの実行中におけるコマンドのインターセプトは、エミュレートされる必要があるコマンドのパラメータを決定するハイパーバイザ手段によって行われる。
【００６４】
システムのさらに別の態様において、ファイルからのインターセプトされたコマンドは、少なくとも
・ＡＰＩ関数、
・１組の所定のアクションを表す機械命令の組（マクロコマンド）、
である。
【００６５】
たとえば、悪意あるプログラムは、特定のファイルについて検索を実行し、上記ファイルの属性を変更することが多く、それに対して、例えば、下記のコマンドシーケンスを実行する。
FindFirstFile,  ‘c:\windows\system32\*.pass’,  0x40afb86a
SetFileAttributes,  ‘c:\windows\system32\data.pass’
FindNextFile,  0x40afb86a
CloseHandle,  0x40afb86a
【００６６】
また、上記コマンドシーケンスは、下記の単一コマンドのみによって表されてもよい。
_change_attributes,  ‘c:\windows\system32\*.pass’
【００６７】
システムのさらに別の態様においては、各コマンドを、コマンドの一意の識別子と一致させる。
【００６８】
たとえば、全てのＷｉｎＡＰＩ関数を、0x0000〜0x8000の範囲の数と一致させてもよい、その場合、各ＷｉｎＡＰＩ関数は、その一意の数に対応する（たとえば、ReadFile→0x00f0,  ReadFileEx→0x00f1,  connect→0x03A2）。
【００６９】
システムのさらに別の態様においては、類似のアクションを表すいくつかのコマンドを、単一の識別子と一致させる。
【００７０】
たとえば、ファイルからのデータの読み出しを表す、ReadFileEx、ifstream、getline、getcharなどの全てのコマンドを、識別子_read_data_file  (0x70F0)と一致させる。
【００７１】
挙動パターン形成モジュール１２１は、下記のように設計される。
・挙動ログから選択されたコマンドおよびパラメータに基づいて、少なくとも１つの挙動パターンを形成する。その場合、挙動ログは、ファイルからの実行可能なコマンド（以後、コマンドと称する）の全体を構成し、各コマンドは、上記コマンドを表す少なくとも１つのパラメータ（以後、パラメータと称する）に対応し、挙動パターンは、少なくとも１つのコマンドとパラメータからなる組であり、上記パラメータは、上記１組のコマンド全て（以後、挙動パターンの要素と称する）を表す。
・上述したようにして形成された挙動パターンを畳み込み関数形成モジュール１２２に送信する。
【００７２】
たとえば、挙動ログから、以下のコマンドｃｉおよびパラメータｐｉを選択する。
【数２】
2020115320.tif 000004
【００７３】
選択されたコマンドおよびパラメータに基づいて、挙動パターンを形成する。各挙動パターンは、１つのコマンドおよび上記コマンドを表す１つのパラメータを含む。
【数３】
2020115320.tif 000005
【００７４】
次に、上述したようにして形成されたパターンに基づいて、挙動パターンをさらに形成する。各挙動パターンは、１つのパラメータおよび上記パラメータによって表すことができる全てのコマンドを含む。
【数４】
2020115320.tif 000006
【００７５】
次に、上記のようにして形成されたパターンに基づいて、挙動パターンをさらに形成する。各挙動パターンは、いくつかのパラメータおよび上記パラメータによって同時に表すことができる全てのコマンドを含む。
【数５】
2020115320.tif 000007
【００７６】
システムの一態様においては、コマンドおよびパラメータは、ルールに基づいて挙動ログから選択される。上記ルールによって、少なくとも、下記のコマンドおよびパラメータが選択される。
・連続したｉ番目毎のコマンドおよび上記コマンドを表すパラメータ。インクリメントｉは所定の増分である。
・前に選択されたコマンドから所定の時間の経過後に（たとえば、１０秒ごとに）実行され、自身のパラメータを表すコマンド。
・ファイルの実行開始から所定の時間間隔で実行されるコマンド、および上記コマンドを表すパラメータ。
・所定のリストからのコマンド、および上記コマンドを表すパラメータ。
・所定のリストからのパラメータ、および上記パラメータによって表すことができるコマンド。
・コマンドパラメータの数が所定の閾値よりも多い場合における、コマンドの、最初またはランダムなｋ個のパラメータ。
【００７７】
たとえば、挙動ログから、（CreateFile、ReadFile、WriteFile、DeleteFile、GetFileAttributeなどの）ハードディスクとともに動作するための全てのコマンドを選択し、選択されたコマンドを表す全てのパラメータを選択する。
【００７８】
さらに別の例において、挙動ログから１，０００番目毎にコマンドを選択し、選択されたコマンドを表す全てのパラメータを選択する。
【００７９】
システムの一態様において、挙動ログは、少なくとも２つのファイルから事前に形成され、上記ファイルのうち一方は安全なファイルであり、他方は悪意あるファイルである。
【００８０】
システムのさらに別の態様において、挙動パターンの各要素を、上記挙動パターンの要素の種類などの特徴と一致させる。挙動パターンの要素（コマンドまたはパラメータ）の種類は、少なくとも、以下の通りである。
・挙動パターンの要素を数として表現することができる場合には、「数の範囲」である。
【００８１】
たとえば、connectコマンドのパラメータｐｏｒｔｈｔｍｌ＝８０を構成する挙動パターンの要素に対して、挙動パターンの上記要素の種類は、「0×0000〜0×FFFFの範囲の数」であってもよい。
・挙動パターンの要素をストリングの形で表現することができる場合には、「ストリング」である。
【００８２】
たとえば、connectコマンドを構成する挙動パターンの要素に対して、挙動パターンの上記要素の種類は、「３２文字のサイズより少ないストリング」であってもよい。
・挙動パターンの要素を所定のデータ構造によって表すことができるデータの形で表現することができる場合には、挙動パターンの上記要素の種類は、「データ構造」であってもよい。
【００８３】
たとえば、find_recordコマンドのパラメータ
【数６】
2020115320.tif 000008
を構成する挙動パターンの要素に対して、挙動パターンの上記要素の種類は、「データ構造ＭＤ５」であってもよい。
【００８４】
システムのさらに別の態様において、挙動パターンは、上記挙動パターンの要素として、少なくとも、
・語彙素の形成のための所定のルール、
・事前に訓練された再帰型ニューラルネットワーク、
を用いた、挙動パターンの上記要素の語彙分析に基づいて形成されたトークンを、さらに含む。
【００８５】
たとえば、下記のパラメータの語彙分析を用いて、
‘c:\windows\system32\data.pass’
語彙素を形成するためのルール、すなわち、
・ストリングがファイルへのパスを含む場合には、上記ファイルが在るディスクを判定する、
・ストリングがファイルへのパスを含む場合には、上記ファイルが在るフォルダを判定する、
・ストリングがファイルへのパスを含む場合には、ファイルの拡張子を判定する、
ルールに基づき、
上記語彙素は、
・ファイルへのパス、
・ファイルが在るフォルダ、
・ファイル名、
・ファイルの拡張子
であり、
下記のトークンを形成することができる。
【００８６】
“paths  to  the  file”  →
‘c:\’,
“folders  in  which  the  files  are  located”  →
‘windows’,
‘system32’,
‘windows\system32’,
“extensions  of  the  files”  →
‘.pass’
【００８７】
さらに別の例において、下記のパラメータの語彙分析を用いて、
‘81.19.82.8’,‘81.19.72.38’,‘81.19.14.32’
語彙素を形成するための下記のルールに基づいて、
・パラメータがＩＰアドレスを構成する場合には、上記ＩＰアドレスを表すビットマスク（または、メタ文字によって表現されるビットマスクのアナログ）を判定し（すなわち、全ての上記ＩＰに対して等式
【数７】
2020115320.tif 000009
が真であるようなビットマスクＭ）、
下記のトークンを構築することができる。
‘81.19.*.*’.
【００８８】
さらに別の例において、数を含む全ての利用可能なパラメータから、数のトークンを、下記の所定範囲内で形成し、
23,  16,  7224,  6125152186,  512,  2662162,  363627632,  737382,  52,  2625,  3732,  812,  3671,  80,  3200
下記の数の範囲によって選別する。
0~999
→｛16,  23,  52,  80,  512,  812｝,
1000~9999
→｛2625,  3200,  3671,  7224｝,
10000~
→｛737382,  2662162,  363627632,  6125152186｝
【００８９】
システムのさらに別の態様において、トークンは、ストリングからなる挙動パターンの要素から形成される。
【００９０】
たとえば、挙動パターンは、ディスク、ディレクトリ、ファイル、ファイル拡張子などの名前を含むファイルへのパスである。この場合、トークンは、ディスクの名前およびファイル拡張子であってもよい。
C:\Windows\System32\drivers\acpi.sys
→
C:\
*.sys
【００９１】
畳み込み関数形成モジュール１２２は、下記のように設計される。
・得られた挙動パターンについて実行された畳み込み関数の結果の逆畳み込み関数の結果が、指定値よりも大きい得られた挙動パターンと類似性を有することになるように、挙動パターンから畳み込み関数を形成する。すなわち、
【数８】
2020115320.tif 000010
式中、
ｒｉは、挙動パターンであり、
ｇは、畳み込み関数であり、
ｇ−１は、逆畳み込み関数である。
・上記のようにして形成された畳み込み関数を検出モデル機械学習モジュール１３２に送信する。
【００９２】
システムの一態様において、畳み込み関数形成モジュール１２２は、さらに、以下のように設計される。
・得られた挙動パターンに基づいて挙動パターンの特徴ベクトルを計算する。その場合、上記挙動パターンの特徴ベクトルは、挙動パターンの要素のハッシュ合計として表現されてもよい。
・挙動パターンの特徴ベクトルから畳み込み関数を形成する。その場合、上記畳み込み関数は、計算された特徴ベクトルと、計算された特徴ベクトルのハッシュ関数の結果の逆ハッシュ関数の結果との間の類似性の程度が所定の値よりも大きくなるように、ハッシュ関数を構成する。
【００９３】
システムのさらに別の態様において、畳み込み関数は、計量学習の方法によって形成される。すなわち、所定の閾値より類似性の程度が大きい挙動パターンに対して、上記畳み込み関数を用いて得られた畳み込み間の隔たりが所定の閾値未満になるようにし、一方で、所定の閾値より類似性の程度が小さい挙動パターンに対して、上記隔たりは上記所定の閾値より大きくなるようにする。
【００９４】
たとえば、挙動パターンの特徴ベクトルを、以下のように計算してもよい。
・まず、１００，０００個の要素からなる、空のビットベクトルを作成する（上記ベクトルの各要素に対して、１ビットの情報が予約される）。
・挙動パターンｒからの１，０００個の要素が、コマンドｃｉについてのデータを記憶するために確保され、残りの９９，０００個の要素が、挙動パターンｒのパラメータｃｉのために確保される。その場合、５０，０００個の要素（要素１００１〜要素５１０００）が、ストリングパラメータ用に確保され、２５，０００個の要素（要素５１００１〜要素７６０００）が、数のパラメータ用に確保される。
・挙動パターンｒの各コマンドｃｉを、０〜９９９の特定の数ｘｉと一致させるとともに、対応するビットを、下記のように作成されたベクトルに設定する。
【数９】
2020115320.tif 000011
・挙動パターンｒの各パラメータｐｉに対して、ハッシュ合計を、下記の式によって計算する。
・ストリングに対しては、
【数１０】
2020115320.tif 000012
・数に対しては、
【数１１】
2020115320.tif 000013
・その他に対しては、
【数１２】
2020115320.tif 000014
計算されたハッシュ合計に依存して、対応するビットを下記のようにして作成したベクトルに設定する。
【数１３】
2020115320.tif 000015
【００９５】
上述したように設定された要素を備えた上記ビットベクトルは、挙動パターンｒの特徴ベクトルを構成する。
【００９６】
システムのさらに別の態様において、挙動パターンの特徴ベクトルは、以下の式によって計算される。
【数１４】
2020115320.tif 000016
式中、
ｂは、計算の位取り記数法の底であり（たとえば、２進法のベクトルについては、ｂ＝２であり、ストリング、すなわち、文字群を表すベクトルについては、ｂ＝８である）、
ｒｉは、挙動パターンのｉ番目の要素であり、
ｈは、ハッシュ関数であって、
【数１５】
2020115320.tif 000017
である。
【００９７】
たとえば、挙動パターンの特徴ベクトルを、以下のように計算してもよい。
・まず、（前の例とは異なる）さらに別の空のビットベクトルを作成する。上記空のビットベクトルは１，０００個の要素からなる（１ビットの情報はベクトルの各要素のために予約される）。
・以下の式によって、挙動パターンｒの各パターン要素ｒｉに対してハッシュ合計を計算し、
【数１６】
2020115320.tif 000018
計算されたハッシュ合計に依存して、下記の式を満たすように作成したベクトルに対応するビットを設定する。
【数１７】
2020115320.tif 000019
システムのさらに別の態様においては、挙動パターンの特徴ベクトルは、ブルームフィルタを構成する。
【００９８】
たとえば、挙動パターンの特徴ベクトルは、以下のように計算してもよい。
・まず、（前の例とは異なる）さらに別の空のベクトルを作成する。上記空のベクトルは、１００，０００個の要素からなる。
・下記の式により、１組のハッシュ関数｛ｈｊ｝を用いて、挙動パターンｒの各パターン要素ｒｉに対して少なくとも２つのハッシュ合計を計算する。
【数１８】
2020115320.tif 000020
式中、
【数１９】
2020115320.tif 000021
計算されたハッシュ合計に依存して、下記の式を満たすように作成したベクトルに対応する要素を設定する。
【数２０】
2020115320.tif 000022
【００９９】
システムのさらに別の態様において、挙動パターンの特徴ベクトルの構築された畳み込み関数の結果は、挙動パターンの上記特徴ベクトルより小さいサイズとなる。
【０１００】
たとえば、特徴ベクトルは、１００，０００個の要素を含むビットベクトルを構成し、したがって、１２，５００バイトのサイズを有する。一方、上記特徴ベクトルの畳み込み関数の結果は、８つのＭＤ５のハッシュ合計からなる１組を構成し、したがって、２５６バイトのサイズ、すなわち、特徴ベクトルの２％以下のサイズを有する。
【０１０１】
システムのさらに別の態様において、特徴ベクトルと計算された特徴ベクトルの上記ハッシュ関数の結果の逆ハッシュ関数の結果との類似性の程度は、０〜１の範囲の数値で表され、以下の式によって計算される。
【数２１】
2020115320.tif 000023
式中、
【数２２】
2020115320.tif 000024
は、ｈ（ｒｉ）とｇｉとの合同を表し、
｛ｈ（ｒｉ）｝は、挙動パターンの要素のハッシュ関数の結果の組を表し、
｛ｇｉ｝は、挙動パターンの要素のハッシュ関数の結果の逆ハッシュ関数の結果の組を表し、
ｒｉは、挙動パターンのｉ番目の要素を表し、
ｈは、ハッシュ関数を表し、
ｗは、類似性の程度を表す。
たとえば、計算された特徴ベクトルは、下記のビットベクトルを構成し、
101011100110010010110111011111101000100011001001001001110101101101010001100110110100100010000001011101110011011011
この特徴ベクトルの畳み込み関数の結果は下記の通りであり、
1010011110101110101
上記のようにして得られた結果の逆畳み込み関数の結果は、下記の通りである。
【数２３】
2020115320.tif 000025
（上記結果において、太字および下線は、特徴ベクトルとは異なる要素を示す）。よって、特徴ベクトルと逆畳み込み関数の結果との類似性は、０．９２である。
【０１０２】
システムのさらに別の態様において、パラメータとして挙動パターンの要素を使用する上記ハッシュ関数は、挙動パターンの要素の種類に依存する。
【数２４】
2020115320.tif 000026
【０１０３】
たとえば、ファイルへのパスを含むストリングを構成する挙動パターンからパラメータのハッシュ合計を計算するために、ハッシュ関数ＣＲＣ３２を用い、他のいずれのストリングに対しては、ハフマンアルゴリズムを、データセットに対しては、ハッシュ関数ＭＤ５を用いる。
【０１０４】
システムのさらに別の態様において、挙動パターンの特徴ベクトルの畳み込み関数を、オートエンコーダによって形成する。この場合、入力データは、挙動パターンの上記特徴ベクトルの要素であり、出力データは、所定の閾値よりも大きい入力データに対する類似性の係数を有するデータである。
【０１０５】
検出モデル作成モジュール１３１は、下記のように設計される。
・悪意あるファイルを検出するためのモデルを作成する。上記作成工程は、少なくとも、
・検出モデルによる機械学習法の選択と、
・訓練モデルのパラメータの初期化と、
を含み、検出モデルによる機械学習の開始に先立って初期化された訓練モデルのパラメータが、ハイパーパラメータとして知られており、訓練選択肢準備モジュール１１１によって選択されたファイルのパラメータに依存する。
・上述したように作成された訓練モデルを検出モデル機械学習モジュール１３２に送信する。
【０１０６】
たとえば、検出モデルによる機械学習法を選択する際、まず、検出モデルとして、人工ニューラルネットまたはランダムフォレストのいずれを使用するかの決定がなされる。次に、次に、ランダムフォレストが選択された場合には、ランダムフォレストのノードに対する分離基準が選択されるか、または、人工ニューラルネットが選択された場合には、人工のニューラルネットのパラメータの数値を最適化する方法が選択される。さらに、機械学習のための特定の方法の選択に関する決定は、所定の種類（すなわち、データ構造、挙動パターンの要素の数、悪意あるファイルについて検索が行われるコンピュータデバイスの性能、コンピュータデバイスの利用可能なリソースなど）の入力データ（挙動パターン）を用いて悪意あるファイルの検出における上記方法の有効性（すなわち、悪意あるファイルを検出する際に生じる第１および第２の種類のエラーの数）に基づいてなされる。
さらに別の例において、検出モデルによる機械学習のための方法は、少なくとも、
・クロステスト、スライディングチェック、交差検証（ＣＶ）、
・ＡＩＣおよびＢＩＣなどの基準の数学的検証、
・Ａ／Ｂテスト、スプリットテスト、
・スタッキング、
に基づいて、選択される。
【０１０７】
さらに別の例において、コンピュータデバイスの性能が低い場合、ランダムフォレストが選択され、それ以外は、人工ニューラルネットが選択される。
【０１０８】
システムの一態様において、機械学習は、事前に作成された未訓練の検出モデル（すなわち、モデルのパラメータが、入力データの分析に基づいて、所定の閾値よりも高い精度で出力データを作成することができない、検出モデル）に対して行われる。
システムのさらに別の態様において、検出モデルによる機械学習法は、少なくとも、
・決定木に基づいた勾配ブースティング、
・決定木、
・ｋ近傍法、
・サポートベクトルマシン（Support  Vector  Machine：ＳＶＭ）法、
である。
【０１０９】
システムのさらに別の態様において、検出モデル作成モジュール１３１は、さらに、検出モデル機械学習モジュール１３２からの要求に応じて検出モデルを作成するように設計される。その場合、あるハイパーパラメータおよび機械学習法は、前の検出モデルに対して選択されたハイパーパラメータおよび機械学習法とは異なるように選択される。
【０１１０】
検出モデル機械学習モジュール１３２は、検出モデルを訓練するように設計される。その場合、検出モデルのパラメータは、得られた挙動パターンについての得られた畳み込み関数を用いて計算され、検出モデルは、上記検出モデルの計算されたパラメータを用いて少なくとも１つの挙動パターンに基づいてファイルの悪意性の程度を計算するための１組のルールを構成する。
【０１１１】
たとえば、検出モデルは、訓練選択肢準備モジュール１１１によって選択された１組の既知のファイル上で訓練される。このとき、上記１組のファイルは、安全なファイルを６０％、悪意あるファイルを４０％含む。
【０１１２】
システムの一態様において、ファイルの悪意性の程度は、０〜１の数値で表され、０は、ファイルが安全であることを示し、１は、ファイルに悪意があることを示す。
【０１１３】
システムのさらに別の態様において、挙動ログの分析に基づいて形成された挙動パターンの数の変化に依存するファイルの悪意性の程度が単調に変化することを保証する、検出モデルの訓練方法が選択される。
【０１１４】
たとえば、ファイルの悪意性の程度における単調な変化は、後続する各挙動パターンを分析した時に、計算された悪意性の程度が、前に計算された悪意性の程度以上になるであろうことを意味する（たとえば、１０番目の挙動パターンの分析の後では、計算された悪意性の程度は、０．２に等しく、５０番目の挙動パターンの分析の後では、悪意性の程度は、０．４となり、１００番目の挙動パターンの分析の後では、悪意性の程度は、０．７となる）。
【０１１５】
システムのさらに別の態様においては、検出モデル機械学習モジュール１３２は、さらに、下記のように設計される。
・ファイルのテスト選択肢からファイルの悪意性の判定の精度を判定するために、ファイルのテスト選択肢からファイルの分析に基づいて形成されて得られた挙動ログに対して訓練された検出モデルの検査を実行する。
・検査の結果が否定的なものであった場合には、リクエストを、少なくとも、
・検出モデルの訓練に使用されている現在のものとは異なるファイルの選択肢を準備するために、訓練選択肢準備モジュール１１１に送り、かつ、
・現在のものとは異なる、新しい検出モデルを作成するために、検出モデル作成モジュール１３１に送る。
【０１１６】
さらに、訓練された検出モデルの検査は、下記のことを伴う。上記検出モデルは、訓練選択肢準備モジュール１１１によって選択された１組のファイルに基づいて訓練されている。そのために、上記ファイルが安全なファイルであるか、または悪意あるファイルであるかが分かっていた。悪意あるファイルを検出するためのモデルが正しく訓練されていること、すなわち、上記検出モデルは悪意あるファイルを検出するとともに安全なファイルを看過することができるということを検証するために、上記モデルの検査を行う。このため、上記検出モデルは、訓練選択肢準備モジュール１１１によって選択された別の１組のファイルからのファイルが悪意あるものであるかどうかを判定するために使用される。なお、上記ファイルが悪意あるものであるかどうかは事前に分かっている。このように、「見逃された」悪意あるファイルの数、および、検出された安全なファイルの数を判定する。見逃された悪意あるファイルおよび検出された安全なファイルの数が所定の閾値よりも大きい場合には、その検出モデルは、不適切に訓練されたものであると認識され、上記検出モデルに対して、（たとえば、ファイルの別の訓練選択肢に関して、前のものとは異なる検出モデルのパラメータの値を使用するなどして）機械学習を反復することが必要とされる。
【０１１７】
たとえば、訓練されたモデルの検査を実行するとき、ファイルのテスト選択肢から悪意あるファイルを検出する際に、第１および第２の種類のエラーの数を検査する。
そのようなエラーの数が所定の閾値よりも大きい場合、ファイルの新たな訓練およびテスト選択肢が選択されて、新たな検出モデルが作成される。
【０１１８】
さらに別の例において、ファイルの訓練選択肢が１０，０００個のファイルを含み、このうち、８，５００個が悪意あるものであり、１，５００個が安全なものであった。検出モデルの訓練後、検出モデルを、１２００個のファイルを含むファイルのテスト選択肢に関して、検査した。上記ファイルのテスト選択肢のうち、３５０個が悪意あるものであり、８５０個が安全なものであった。実行された検査の結果に従って、３５０個の悪意あるファイルのうち１５個（４％）が検出に失敗した。一方、８５０個の安全なファイルのうち１０２個（１２％）が誤って悪意あるものと認識された。未検出の悪意あるファイルの数が５％を超えるか、または、偶然に検出された安全なファイルが０．１％を超える場合、訓練された検出モデルは、不適切に訓練されたものであると認める。
【０１１９】
システムの一態様において、システムの挙動ログは、システムの挙動の、事前に形成されたログおよびシステムの上記挙動ログの形成後にインターセプトされたコマンドに基づいて、さらに形成される。
【０１２０】
たとえば、ファイルの悪意性または安全性について判定することが必要であるファイルの実行の開始後に、インターセプトされた実行可能なコマンドおよび上記コマンドを表すパラメータが挙動ログに記録される。これらのコマンドおよびパラメータの分析に基づいて、そのファイルの悪意性の程度を計算する。分析の結果に基づいてファイルが悪意あるものかまたは安全なものであるかの判定がなされなかった場合、コマンドのインターセプトを継続してもよい。インターセプトされたコマンドおよび上記コマンドを表すパラメータは、古い挙動ログまたは新しい挙動ログに記録される。第１の場合、挙動ログに記録された全てのコマンドおよびパラメータの分析、すなわち、悪意性の程度を計算するために前に使用されたコマンドおよびパラメータにも基づいて、悪意性の程度を計算する。
【０１２１】
悪意性程度計算モジュール１４２は、以下のように設計される。
・挙動ログ形成モジュール１１２から得られた挙動ログおよび検出モデル機械学習モジュール１３２から得られた検出モデルに基づいて、悪意性の程度を計算する。ファイルの悪意性の程度は、実行対象ファイルの悪意ある挙動を表す定量的な特徴である。（たとえば、０〜１の範囲、つまり、０、すなわち、ファイルが安全な挙動のみを有する、から１、すなわち、上記ファイルが所定の悪意ある挙動を有する、の範囲内にある）
・計算された悪意性の程度を資源管理モジュール１４３へ送信する。
【０１２２】
資源管理モジュール１４３は、コンピュータシステムのセキュリティを確保する際に使用するために、得た悪意性の程度の分析に基づいて、コンピュータシステムの計算資源を割り当てるように設計される。
【０１２３】
システムの一態様において、コンピュータシステムの計算資源は、少なくとも、
・ＲＡＭ空き容量、
・ハードディスクの空き領域の容量、
・（たとえば、より深いエミュレーションにより）アンチウイルススキャニングに費やすことができる、空きプロセッサ時間（プロセッサ時間の分量）、
である。
【０１２４】
システムのさらに別の態様においては、悪意性の程度の分析は、先行する悪意性の程度の各計算の後における悪意性の程度の値における変化の動態を判定すること、および、少なくとも、
・悪意性の程度の値が増加した場合には、コンピュータシステムの追加資源を割り当てること、
・悪意性の程度の値が減少した場合には、事前に割り当てられた、コンピュータシステムの資源を解放すること、
にある。
【０１２５】
図２は、悪意あるファイルを検出するためのモデルを用いて機械学習する方法の構成図である。
【０１２６】
悪意あるファイルを検出するためのモデルを用いて機械学習する方法の構成図は、ファイルを訓練する選択肢を準備するステップ２１１と、挙動ログを形成するステップ２１２と、挙動パターンを形成するステップ２２１と、畳み込み関数を形成するステップ２２２と、検出モデルを作成するステップ２３１と、検出モデルを訓練するステップ２３２と、コンピュータシステムの挙動を追跡するステップ２４１と、悪意性の程度を計算するステップ２４２と、コンピュータシステムの資源を管理するステップ２４３と、を含む。
【０１２７】
ステップ２１１において、訓練選択肢準備モジュール１１１は、所定の基準にしたがって、ファイルのデータベースから少なくとも１つのファイルを選択するために使用される。この場合、選択されたファイルに基づいて、ステップ２３２で検出モデルの訓練を行う。
【０１２８】
ステップ２１２において、挙動ログ形成モジュール１１２は、下記のことをするのに使用される。
・少なくとも１つのコマンドを、少なくとも
・ステップ２１１において選択されたファイルを実行する、
・ステップ２１１において選択されたファイルの作動のエミュレーションをする
最中にインターセプトする。
・インターセプトされた各コマンドについて、上記コマンドを表す少なくとも１つのパラメータを決定する。
・インターセプトされたコマンドおよび決定されたパラメータに基づいて、得られたファイルの挙動ログを形成する。この場合、挙動ログは、ファイルからのインターセプトされたコマンド（以後、コマンドと称する）の組を表し、各コマンドは、上記コマンドを表す少なくとも１つの定義されたパラメータ（以後、パラメータと称する）に対応する。
【０１２９】
ステップ２２１において、挙動パターン形成モジュール１２１を使用して、ステップ２１２で形成した挙動ログから選択されたコマンドおよびパラメータに基づいて、少なくとも１つの挙動パターンを形成する。この場合、挙動ログは、ファイルからの実行可能なコマンド（以後、コマンドと称する）の組を表し、各コマンドは、上記コマンドを表す少なくとも１つのパラメータ（以後、パラメータと称する）に対応し、挙動パターンは、少なくとも１つのコマンドおよびパラメータからなる組であり、上記パラメータは、上記コマンドおよびパラメータからなる組からのコマンド全てを表す。
【０１３０】
ステップ２２２において、畳み込み関数形成モジュール１２２を使用して、ステップ２２１で形成した挙動パターンの畳み込み関数を形成し、その結果、上記挙動パターンに対して実行した上記畳み込み関数の結果の逆畳み込み関数の結果は、指定された値よりも大きい上記挙動パターンとの類似性を有する。
【０１３１】
ステップ２３１において、検出モデル作成モジュール１３１を使用して、検出モデルを作成する。そのため、少なくとも、
・検出モデルによる機械学習法が選択され、
・訓練モデルのパラメータが初期化される。この場合、検出モデルによる機械学習の開始に先立って初期化された訓練モデルのパラメータは、ハイパーパラメータとして知られる。
【０１３２】
上記検出モデルの作成は、ステップ２１１で選択されたファイルのパラメータに依存する。
【０１３３】
ステップ２３２において、検出モデル機械学習モジュール１３２を使用して、ステップ２３１において作成した検出モデルを訓練する。この場合、上記検出モデルのパラメータは、ステップ２２２において形成され、かつ、ステップ２２１において形成された挙動パターンについて実行された畳み込み関数を用いて計算される。ここで、検出モデルは、検出モデルの、計算されたパラメータを用いて、少なくとも１つの挙動パターンに基づいて、ファイルの悪意性の程度を計算するためのルールの一群を構成する。
【０１３４】
ステップ２４１において、挙動追跡モジュール１４１を用いて下記のことを実施する。
・コンピュータシステム上を走っているファイルによって実行される少なくとも１つのコマンドをインターセプトする、
・インターセプトされたコマンドに基づいて上記システムの挙動ログを形成する。
【０１３５】
ステップ２４２において、悪意性程度計算モジュール１４２を使用して、ステップ２４１で形成したシステムの挙動ログおよびステップ２３２で訓練した検出モデルに基づいて、悪意性の程度を計算する。
【０１３６】
ステップ２４３において、資源管理モジュール１４３は、コンピュータシステムのセキュリティを確保する際に使用される、ステップ２４２で計算したような悪意性の程度の分析に基づいて、計算資源を割り当てるために使用される。
【０１３７】
図３は、挙動パターンの数の関数としての悪意性の程度の変化の動態例を示す。
【０１３８】
挙動パターンの数の関数としての悪意性の程度における変化の動態例は、悪意あるファイルの実行中に形成された挙動パターンの数の関数としての悪意性の程度における任意の変化の動態を示すグラフ３１１と、悪意あるファイルの実行中に形成された挙動パターンの数の関数としての悪意性の程度における単調な変化の動態を示すグラフ３１２と、安全なファイルの実行中に形成された挙動パターンの数の関数としての悪意性の程度における任意の変化の動態を示すグラフ３２１と、安全なファイルの実行中に形成された挙動パターンの数の関数としての悪意性の程度における単調な変化の動態を示すグラフ３２２と、を含む。
【０１３９】
システムの一態様においては、実行対象ファイルの悪意性の程度は、０（ファイルが絶対的に安全な挙動をとる）〜１（ファイルが所定の悪意ある挙動をとる）の範囲内の値をとる。
【０１４０】
グラフ３１１は、悪意あるファイルの実行中に形成された挙動パターンの数の関数として悪意性の程度における任意の変化の動態を示す。
【０１４１】
最初、上記ファイルを実行する時点では、形成された挙動パターンの数は大きいものではなく、さらに、実行対象ファイルに悪意ある活動はない、または、最小であることがある（たとえば、データは初期化されるが、それは安全なファイルを含む多くのファイルにとって当然のことである）。その結果、計算された悪意性の程度は、０と殆ど変わらず、所定の閾値（以後、安全性基準と称する）を超えるものではない。悪意性の程度が上記閾値を超えると、実行対象ファイルの挙動は、安全であるとはみなされなくなる（グラフ上では、この閾値は、点線によって示されている）。
【０１４２】
しかし、やがて実行対象ファイルの悪意ある活動が増加し、悪意性の程度が、１に近づき始め、安全性基準を上回り、一方、悪意性の程度が、所定の閾値（以後、悪意性基準と称する）、すなわち、それを超えると実行対象ファイルの挙動が悪意あるものであるとみなされる閾値（グラフにおいて、この閾値は破線によって示されている）に到達しないことがある。
【０１４３】
増加期間の後、悪意ある活動が止むと、悪意性の程度は、再び０へ向かうことになる（時間Ａ）。ある時間において、悪意性の程度は悪意性基準より大きくなり（時間Ｂ）、実行対象ファイルの挙動は、悪意あるものと認識され、その結果、ファイル自体が悪意あるものと認識される。
【０１４４】
悪意ある活動が増加し始める時間から、かなり遅れて、ファイルを悪意あるものとして認識することがある。その理由は、上述したアプローチは、悪意性の程度が急激に高くなる場合によく反応するからであり、これは、実行対象ファイルの悪意ある活動が長期間にわたり明瞭に発現する時に、最も頻繁に生じる。
【０１４５】
悪意ある挙動が偶発的に生じた場合（グラフ３１１左側参照）、計算された悪意性の程度は、上記値に到達せず、その後、実行対象ファイルの挙動の悪意性と、その結果としての実行対象ファイル自体の悪意性について判定がなされる。
【０１４６】
形成された各挙動パターンに基づかずに悪意性の程度が計算される場合（たとえば、コンピュータデバイスの性能が高くないなどの理由による）、時間Ａ（悪意ある活動が開始する時間）および時間Ｃ（悪意ある活動が終了する時間）において悪意性の程度が計算され、一方、時間Ｂ（悪意ある活動が生じている時間）においては計算されず、その結果、計算された悪意性の程度が悪意性基準を超えず、また、実行対象ファイルの活動が悪意あるものと認識されず、よって、悪意あるファイルが検出されないことになるという状況がありうる。
【０１４７】
グラフ３１２は、悪意あるファイルの実行中に形成された挙動パターンの数の関数として悪意性の程度における単調な変化の動態を示す。
【０１４８】
最初、上記ファイルを実行する時点では、形成された挙動パターンの数は大きいものではなく、さらに、実行対象ファイルに悪意ある挙動はない、または、最小であることがある（たとえば、データは初期化されるが、それは、安全なファイルを含む、多くのファイルにとって当然のことである）。その結果、計算された悪意性の程度は、０と殆ど変わらず、所定の閾値（以後、安全性基準と称する）を超えるものではない。悪意性の程度が上記閾値を超えると、実行対象ファイルの挙動は、安全であるとはみなされなくなる（グラフ上では、この閾値は、点線によって示されている）。
【０１４９】
しかし、やがて実行対象ファイルの悪意ある活動が増加し、悪意性の程度が、１に近づき始め、安全性基準を上回り、一方で、悪意性の程度が、所定の閾値（以後、悪意性基準と称する）、すなわち、それを超えると、実行対象ファイルの挙動が悪意あるものであるとみなされる閾値（グラフ上では、この閾値は破線によって示されている）に到達しないことがある。
【０１５０】
増加期間（Ａ〜Ｂ期間）の後、悪意ある活動が止む（Ｂ〜Ａ期間）ことがあるが、悪意性の程度はもはや低下せず、実行対象ファイルのいかなる悪意ある活動の間においても増加し続けるのみである。ある時間において、悪意性の程度が悪意性基準よりも高くなり（時間Ｄ）、実行対象ファイルの挙動は、悪意あるものとして認識される。その結果、ファイル自体が悪意あるものとして認識される。
【０１５１】
さらに、悪意ある活動が発現した直後に、ファイルを悪意あるものとして認識する時が来ることがある。その理由は、上述したアプローチが、悪意性の程度が緩やかに増加することによく反応するからであり、これは、実行対象ファイルの悪意ある活動が長期間にわたって明瞭に発現する時と、あまり目立たない悪意ある活動が頻繁に偶発的に生じる時の両方において起こる。
【０１５２】
悪意ある活動が偶発的に生じる場合（グラフ３１１左側参照）、計算された悪意性の程度は、時間の経過とともに、その値に達することがあり、到達後に、実行対象ファイルの挙動の悪意性および実行対象ファイル自体の悪意性について判定がなされる。
【０１５３】
形成された各挙動パターンに基づかずに悪意性の程度が計算される場合（たとえば、コンピュータデバイスの性能が高くないなどの理由による）、時間Ａ（悪意ある活動が開始する時間）および時間Ｃ（悪意ある活動が終了する時間）において悪意性の程度が計算され、一方、時間Ｂ（悪意ある活動が生じている時間）では計算されず、それにもかかわらず、悪意性の程度は単調に変化するので、計算された悪意性の程度は、その値が増加するのみであり、時間Ｃにおいては、悪意性の程度は悪意性基準を超えることになり、実行対象ファイルの活動は悪意あるものとして認識され、その結果、悪意あるファイルが検出される、という状況がありうる。
【０１５４】
グラフ３２１は、安全なファイルの実行中に形成された挙動パターンの数の関数として悪意性の程度における任意の変化の動態を示す。
【０１５５】
最初、上記ファイルを実行する時点で、形成された挙動パターンの数は大きいものではなく、さらに、悪意ある活動、たとえば、実行対象ファイルに対して、悪意あるファイルの実行中にも実行されることがある（たとえば、ファイルの削除、コンピュータネットワークにおけるデータの転送など）「疑わしい」コマンドが実行されるといった活動はない。したがって、計算された悪意性の程度は、０ではなく、かつ、所定の閾値（以後、安全性基準と称する）、すなわち、それを超えると、実行対象ファイルの挙動が安全なものとみなされなくなる閾値（グラフにおいて、この閾値は点線で示されている）を超えない。
【０１５６】
しかし、多数の「疑わしい」コマンドを実行することが原因となって、実行対象ファイルの悪意ある活動はやがて増加し、悪意性の程度が１に近づき始め、一方で、悪意性の程度は、所定の閾値（以後、悪意性基準と称する）、すなわち、それを超えると、実行対象ファイルの挙動が悪意あるものであるとみなされる閾値（グラフにおいて、この閾値は破線で示されている）に到達しないものの、安全性基準を超えることもあり、その結果、ファイルは、安全なものとみなされなくなり、「疑わしい」ものとなることがある。
【０１５７】
増加期間の後、悪意ある活動が止むことがあり、悪意性の程度は再び０に近づく（時間Ｃ）。
【０１５８】
形成された各挙動パターンに基づかずに悪意性の程度が計算される場合（たとえば、コンピュータデバイスの性能が高くないなどの理由による）、時間Ｂ（活動が、悪意あるものに最も類似する、すなわち「疑わしい」ものになる時）においては悪意性の程度が計算されるが、時間Ａ（「疑わしい」活動が増加している時）または時間Ｃ（「疑わしい」活動が減少している時）においては計算されず、その結果、計算された悪意性の程度が安全性基準を超え、実行対象ファイルの活動が「疑わしい」ものとみなされ（安全なものとはみなされず）、よって、安全なファイルが安全であるとみなされなくなるという状況がありうる。
【０１５９】
グラフ３２１は、安全なファイルの実行中に形成された挙動パターンの数の関数として悪意性の程度における単調な変化の動態を示す。
【０１６０】
最初、上記ファイルを実行する時点では、形成された挙動パターンの数は大きいものではなく、さらに、悪意ある活動、たとえば、実行対象ファイルに対して、悪意あるファイルの実行中にも実行される（たとえば、ファイルの削除、コンピュータネットワークにおけるデータの転送など）「疑わしい」コマンドが実行されるといった活動はなく、したがって、計算された悪意性の程度は、０ではなく、かつ、所定の閾値（以後、安全性基準と称する）、すなわち、それを超えると、実行対象ファイルの挙動が安全なものとみなされなくなる閾値（グラフにおいて、この閾値は点線で示されている）を超えない。
【０１６１】
しかし、多数の「疑わしい」コマンドを実行することが原因となって、実行対象ファイルの悪意ある挙動がやがて増加し、悪意性の程度が１に近づき始め、一方で、悪意性の程度が、所定の閾値（以後、悪意性基準と称する）、すなわち、それを超えると、実行対象ファイルの挙動が悪意あるものであるとみなされる閾値（グラフ上で、この閾値は破線で示されている）に到達せず、かつ、安全性基準も超えないことがある。その結果、ファイルは安全なものとみなされ続ける。
【０１６２】
増大期間（Ａ〜Ｂ期間）の後、悪意ある活動が止む（Ｂ〜Ａ期間）ことがあるが、悪意性の程度はもはや減少せず、実行対象ファイルのいずれの悪意ある活動中に増加し続けるのみとなるものの、安全性の係数は超えない。その結果、実行対象ファイルの活動は、安全なものとみなされ、よって、ファイルは、安全であるとみなされる。
【０１６３】
形成された各挙動パターンに基づかずに悪意性の程度が計算される場合（たとえば、コンピュータデバイスの性能が高くないなどの理由による）、時間Ｂ（活動が、悪意あるものに最も類似する、すなわち「疑わしい」ものになる時）においては悪意性の程度が計算されるが、時間Ａ（「疑わしい」活動が増加している時）または時間Ｃ（「疑わしい」活動が減少している時）においては計算されず、それにもかかわらず、悪意性の程度は単調に変化するので、計算された悪意性の程度は、その値が増加するのみであり、時間Ａ、Ｂ、Ｃにおいて、悪意性の程度は安全性基準を超えず、実行対象ファイルの活動は安全なものとみなされ、その結果、安全なファイルが安全であるとみなされる、という状況がありうる。
【０１６４】
さらに、ファイルを「疑わしい」ものとしてみなす時間が、「疑わしい」活動の発現の後に生じないことがある。これは、上述したアプローチによって、悪意性の程度における滑らかな増加がもたらされ、それによって、悪意性の程度の増加における鋭いピークを回避することができるからである。
【０１６５】
図４は、挙動パターンの要素間における関係の一例を示す図である。
【０１６６】
挙動パターンの要素間における関係図の例は、コマンド４１１（白抜きの丸）と、パラメータ４１２（網掛けの丸）と、１つのパラメータを備えた挙動パターン例４２１と、１つのコマンドを備えた挙動パターン例４２２とを含む。
【０１６７】
ファイルの実行中に、コマンド４１１がインターセプトされ、下記の通り、上記コマンドを表すパラメータ４１２が決定された。
CreateFile  0x24e0da54  ‘.dat’
｛c1,  p1,  p2｝
ReadFile  0x24e0da54  ‘.dat’
｛c2,  p1,  p2｝
DeleteFile  0x24e0da54  ‘.dat’  ‘c:\’
｛c3,  p1,  p2,  p3｝
CreateFile  0x708a0b32  ‘.dat’  0x3be06520
｛c1,  p2,  p3,  p5｝
WriteFile  0x708a0b32
｛c4,  p3｝
WriteFile  0x708a0b32  0x3be06520  0x9902a18d1718b5124728f9  0
｛c4,  p3,  p5,  p6,  p7｝
CopyMemory  0x3be06520  0x9902a18d1718b5124728f9
｛c5,  p4,  p5,  p6｝
ReadFile  0x9902a18d1718b5124728f9  0
｛c2,  p6,  p7｝
【０１６８】
コマンド４１１およびパラメータ４１２に基づいて、挙動パターン（４２１、４２２）を形成し、挙動パターンの要素間における関係を判定する。
【０１６９】
第１のステップにおいて、１つのコマンド４１１と上記コマンドを表す１つのパラメータ４１２とを含むパターンを形成する。
｛c1,  p1｝
｛c1,  p2｝
｛c1,  p3｝
｛c1,  p5｝
｛c2,  p1｝
｛c2,  p2｝
｛c2,  p6｝
｛c2,  p7｝
｛c3,  p1｝
｛c3,  p2｝
｛c3,  p3｝
｛c4,  p3｝
｛c4,  p5｝
｛c4,  p6｝
｛c4,  p7｝
｛c5,  p4｝
｛c5,  p5｝
｛c5,  p6｝
【０１７０】
示した例においては、インターセプトされた８つのコマンド（上記コマンドを表すパラメータを備える）に基づいて、１９個の挙動パターンが形成されている。
【０１７１】
第２のステップにおいて、１つのパラメータ４１２と、上記パラメータ４１２によって表すことができる全てのコマンド４１１とを含むパターンを形成する。
｛c1,  c2,  c3,  p1｝
｛c1,  c2,  c3,  p2｝
｛c1,  c4,  c5,  p5｝
｛c2,  c4,  c5,  p6｝
｛c1,  c3,  c4,  p3｝
｛c5,  p4｝
｛c2,  c4,  p7｝
【０１７２】
示した例では、インターセプトされた８つのコマンド（上記コマンドを表すパラメータを備える）に基づいて、さらに、７つの挙動パターンが形成されている。
【０１７３】
第３のステップにおいて、いくつかのパラメータ４１２と、上記パターン４１２によって表すことができる全てのコマンド４１１とを含むパターンを形成する。
｛c1,  c2,  c3,  p1,  p2｝
｛c4,  c5,  p5,  p6｝
｛c2,  c4,  p6,  p7｝
【０１７４】
示した例では、インターセプトされた８つのコマンド（上記コマンドを表すパラメータを備える）に基づいて、さらに、３つの挙動パターンが形成されている。
【０１７５】
図５は、悪意あるファイルを検出するために訓練されたモデルを使用して、悪意あるファイルを検出するシステムの構成図である。
【０１７６】
悪意あるファイルを検出するために訓練されたモデルを使用して悪意あるファイルを検出するシステムの構成図は、分析対象ファイル５０１と、挙動ログ形成モジュール１１２と、検出モデル選択モジュール５２０と、検出モデルデータベース５２１と、挙動ログ分析モジュール５３０と、悪意性程度計算モジュール５４０と、決定テンプレートデータベース５４１と、分析モジュール５５０と、からなる。
【０１７７】
システムの一態様において、システムは、さらに、実行対象ファイルの挙動ログ形成モジュール１１２を含み、下記のように設計されている。
・少なくとも１つのコマンドを、少なくとも、
・ファイル５０１の実行、
・ファイル５０１の実行のエミュレーション、
の最中にインターセプトする。
・インターセプトした各コマンドについて、上記コマンドを表す少なくとも１つのパラメータを決定する。
・インターセプトしたコマンドおよび決定したパラメータに基づいて、上記ファイルに対する挙動ログを形成する。この場合、インターセプトしたコマンドおよび上記コマンドを表すパラメータを、最初にインターセプトしたコマンドから直近にインターセプトしたコマンドまで時間順に挙動ログに記録する（以後、挙動ログへの書き込みと称する）。
・構築された挙動ログを、挙動ログ分析モジュール５３０および検出モデル選択モジュール５２０へ送信する。
【０１７８】
システムのさらに別の異なる態様において、挙動ログは、ファイル５０１の実行可能なコマンド（以後、コマンドと称する）からなる１組であり、各コマンドは、上記コマンドを表す少なくとも１つのパラメータ（以後、パラメータと称する）に対応する。
【０１７９】
システムのさらに別の態様において、実行対象ファイル５０１のコマンドのインターセプトおよびインターセプトされたコマンドのパラメータの決定は、上記コンピュータデバイス上で、悪意あるファイルを検出するために訓練されたモデルを使用して、悪意あるファイルを検出するためのシステムが走っているコンピュータデバイスの性能の分析に基づいて行われる。これは、少なくとも、以下のことを含む。
・次のコマンドがインターセプトされる時まで、実行対象ファイル５０１の悪意性について分析することが可能かどうか（挙動ログ分析モジュール５３０、悪意性程度計算モジュール５４０、および分析モジュール５５０を用いて）判定する。
・悪意性に関する実行対象ファイル５０１の分析の結果、上記コンピュータデバイスの計算資源が所定の閾値未満まで減少するかどうかを判定する。上記コンピュータデバイスの計算資源は、少なくとも、
・上記コンピュータデバイスの性能、
・上記コンピュータデバイスの空きＲＡＭ容量、
・（ハードディスクなどの）上記コンピュータデバイスの情報記憶メディア上の空き領域の容量、
・上記コンピュータデバイスが接続されるコンピュータネットワークの帯域幅、
を含む。
【０１８０】
悪意あるファイルの検出用に訓練されたモデルを用いて悪意あるファイルを検出するシステムの性能を高めるために、実行対象ファイル５０１に対する実行可能なコマンド全てを含んでいるとは限らない挙動ログを分析する必要がある。これは、悪意性についてファイル５０１を分析するための活動を全て連続して行うと、実行対象ファイル５０１に対して連続して行われる２つのコマンドの間隔よりも多くの時間がかかるからである。
【０１８１】
例えば、実行対象ファイル５０１のコマンドは０．００１秒毎に実行され（かつ、その結果、インターセプトされる）が、ファイル５０１の悪意性についての分析は０．１５秒かかる。その結果、上記時間の間隔中にインターセプトされるコマンド全てが無視され、したがって、１５０番目毎のコマンドのみインターセプトするだけで充分となる。
【０１８２】
検出モデル選択モジュール５２０は、以下のように設計されている。
・実行対象ファイル５０１の挙動ログから選択されたコマンドとパラメータに基づいて、悪意あるファイルを検出するためのモデルを少なくとも２つ、検出モデルデータベース５２１から選択する。なお、悪意あるファイルを検出するためのモデルは、悪意性の程度を判定するための決定ルールである。
・悪意性程度計算モジュール５４０に、悪意あるファイルを検出するためのモデルを全て送信する。
【０１８３】
システムの別の一態様においては、検出モデルデータベース５２１に保存されている悪意あるファイルを検出するためのモデルは、少なくとも１つの安全なファイルと１つの悪意あるファイルに対する機械学習法を用いて、あらかじめ訓練されている。
【０１８４】
悪意あるファイルを検出するためのモデルについては、図１〜図４で、より詳細に説明する。
【０１８５】
システムのさらに別の異なる一態様において、検出モデルによる機械学習法は、少なくとも、
・決定木に基づいた勾配ブースティング、
・決定木、
・ｋ近傍法、
・サポートベクトル、
である。
【０１８６】
システムのさらに別の一態様において、検出モデルを訓練する方法によれば、挙動ログの分析に基づいて形成された挙動パターンの数の変化に依存する、ファイルの悪意性の程度における単調な変化が確実なものとなる。
【０１８７】
例えば、計算されたファイル５０１の悪意性の程度は、ファイル５０１の挙動ログの分析に基づいて形成された挙動パターンの数に依存して、単調に増加するのみか、または、変化しないことがある。ファイル５０１の実行を開始時には、形成された挙動ログの数は小さく、計算されたファイル５０１の悪意性の程度は、０とほとんど異ならない。やがて、形成されたパターンの数が増加し、計算されたファイル５０１の悪意性の程度も増加するか、または、ファイル５０１の悪意ある活動がない場合は、計算される悪意性の程度は変化しない。したがって、悪意あるファイル５０１の実行中にファイルの悪意性の程度を計算するときはいつでも（または、いずれの挙動ログの記録から挙動パターン形成が始まっても）、悪意性の程度は、ファイル５０１の悪意ある活動が生じたか、または上記悪意性の程度を計算する時間までに生じなかったかを反映する。
【０１８８】
システムのさらに別の一態様において、検出モデルデータベース５２１から選択された、悪意あるファイルを検出するためのモデルは、所定の固有の特性を備えた悪意あるファイルを検出するために訓練される。
【０１８９】
例えば、検出モデルデータベース５２１に保存された検出モデルを、以下のファイルを検出するように訓練してもよい。
・グラフィカルユーザインターフェース（Graphical  User  Interface：ＧＵＩ）を有するファイル
・コンピュータネットワークにおいてデータを交換するファイル
・ファイル（「Ｔｒｏｊａｎ−Ｃｒｙｐｔｏｒｓ」系の悪意あるファイルなど）を暗号化するファイル
・伝播ネットワーク脆弱性（たとえば、「Ｎｅｔ−Ｗｏｒｍｓ」系の悪意あるファイル）、Ｐ２Ｐネットワーク（たとえば、「Ｐ２Ｐ−Ｗｏｒｍｓ」系の悪意あるファイル）などに利用するファイル。
【０１９０】
このように、悪意あるファイルを検出するために訓練されたいくつかのモデルを用いて、悪意あるファイルを検出してもよい。たとえば、悪意あるファイル「ＷａｎｎａＣｒｙ．ｅｘｅ」、すなわち、実行中にユーザのコンピュータデバイス上のデータを暗号化し、ファイルが実行されるユーザのコンピュータデバイスと同じコンピュータネットワークに接続された他のコンピュータデバイスに、上記データのコピーを送信する悪意あるファイルは、検出モデル１、２、および３を用いて検出することができる。上記検出モデル１は、脆弱性を利用するファイルを検出するように訓練され、上記検出モデル２は、ファイルを暗号化するように設計されたファイルを検出するよう訓練され、上記検出モデル３は、（例えば、支払フォームや金銭の合計などに関して）なされた要求どおりに解釈可能な文字情報を含むファイルを検出するよう訓練される。さらに、計算した悪意性の程度が所定の閾値を超えるときと同様に、上記モデルを用いて計算した悪意性の程度は、互いに異なることがある。たとえば、悪意あるファイル５０１を検出することに成功した、悪意あるファイル検出用モデルを用いた場合、下記表に記載したような結果となりうる。
【表１】
2020115320.tif 000027
【０１９１】
計算した悪意性の程度が０．７８より大きい場合、ファイル５０１は、悪意あるものとみなされる。さらに、悪意性の程度（０．７８など）によって、悪意性の程度が計算されたファイルに悪意がある（７８％）、または安全である（２２％）と判明する確率が特徴づけられる。悪意あるファイルを検出するためのいくつかのモデルを使用して、ファイル５０１に悪意があると見なすことができる場合、ファイル５０１に悪意があると判明する確率はより高くなる。たとえば、悪意あるファイルを検出するためのモデルであって、表１にそのデータが示されたモデルについて集計した悪意性の程度は、下記の式によって計算することができる。
【数２５】
2020115320.tif 000028
式中、
ｗｔｏｔａｌは、集計した悪意性の程度を表し、
ｗｉは、モデルｉを使用して計算した悪意性の程度を表し、
ｎは、悪意性の程度を集計するために用いる、悪意あるファイル検出用モデルの数を表す。
【０１９２】
このように、得られた悪意性の程度集計値（０．９９９６８５）は、所定の閾値（０．７８）、すなわち、計算されたファイルの悪意性の程度がその閾値を超えると、ファイルが悪意あるものとみなされる閾値よりも、かなり高い。つまり、悪意あるファイルを検出するためのいくつかのモデルを使用することによって、悪意あるファイルの判定の精度を、実質、向上させることができ、かつ、悪意あるファイルの検出中に生じる第１および第２の種類のエラーを減少させることができる。
【０１９３】
さらに別の例において、悪意あるファイルを検出するためのいくつかのモデルを使用することによって、集計された悪意性の程度は、悪意あるファイルを検出するための各モデルを別々に使用する場合よりも、はるかに早く、所定の閾値、すなわち、計算されたファイルの悪意性の程度がその閾値を超えると、ファイルが悪意あるものとみなされる閾値に達することができる。たとえば、悪意あるファイルを検出するためのモデルであって、そのデータが表１に示されているモデルに関して、計算した悪意性の程度が単調に変化したとすると、ファイルがその後、悪意あるものとみなされる挙動ログからのコマンドの数を、以下の式によって計算することができる。
【数２６】
2020115320.tif 000029
式中、
Ｉｄｅｔｅｃｔは、挙動ログからのコマンドの数であって、その分析後にファイルが悪意あるものとみなされるコマンドの数を表し、
Ｉｉは、挙動ログからのコマンドの数であって、モデルｉを使用して、その分析後にファイルが悪意あるものとみなされるコマンドの数を表し、
ｗｉは、モデルｉを使用して計算した悪意性の程度を表し、
ｎは、挙動ログからのコマンドの数を計算するために使用される悪意あるファイル検出用モデルの数であって、その分析後にファイルが悪意あるものとみなされる、モデルの数を表す。
【０１９４】
このように、挙動ログからのコマンドの数の得られた集計値（２０７）は、悪意あるファイル検出用モデルのうちの１つ（モデル２）によって、分析後にファイルが悪意あるものとみなされる挙動ログからのコマンドの最初期の数（２８８）よりも、はるかに低い。つまり、悪意あるファイルの検出のためのモデルをいくつか使用することで、悪意あるファイルの判定の速度（すなわち効率）を、実質、向上させることができる。
【０１９５】
さらに別の例において、検出モデルデータベース５２１に保存された異なる検出モデルを、必ずしも固有ではない所定の特性をいくつか備えた悪意あるファイルを検出するように訓練してもよい。すなわち、検出モデル１は、グラフィカルユーザインターフェースを有し、かつ、コンピュータネットワークにおいてデータを交換するファイルを検出することができ、検出モデル２は、コンピュータネットワークにおいてデータを交換し、かつ、上記コンピュータネットワークにおいて、ネットワークの脆弱性を利用して伝播するファイルを検出することができる。ネットワークの脆弱性を利用してコンピュータネットワークにおいて伝播するファイルの一般的な特性のため、上記検出モデルは両方とも、上記悪意あるファイル「ＷａｎｎａＣｒｙ．ｅｘｅ」を検出することができる。
【０１９６】
システムのさらに別の一態様において、検出モデルデータベース５２１から選択された、悪意あるファイルを検出するためのモデルは、ファイルの実行中に、少なくとも以下のことがなされたファイルについて、訓練された。
・実行対象ファイル５０１の挙動ログから選択されたコマンドと同じコマンドが実行された。
・実行対象ファイル５０１の挙動ログから選択されたパラメータと同じパラメータが使用された。
【０１９７】
例えば、コマンド「ＣｒｅａｔｅＦｉｌｅＥｘ」、「ＲｅａｄＦｉｌｅ」、「ＷｒｉｔｅＦｉｌｅ」、および「ＣｌｏｓｅＨａｎｄｌｅ」は、挙動ログから選択されたものであり、ファイルの暗号化を含む、ファイルの変更に使用される。「Ｔｒｏｊａｎ−Ｃｒｙｐｔｏｒｓ」系の悪意あるファイルの検出に使用するために訓練された検出モデルは、検出モデルデータベース５２１から選択される。
【０１９８】
さらに別の例において、パラメータ「８０８０」と「２１」は、コンピュータネットワークとともに作用するためのコマンドを表す（たとえば、connect。すなわち、上記パラメータは電子アドレスへの接続ポートであることを示す。）挙動ログから選択された。コンピュータネットワークにおけるデータ交換を確実にするファイルの検出に使用するために訓練された検出モデルは、検出モデルデータベース５２１から選択される。
【０１９９】
挙動ログ分析モジュール５３０は、以下のように設計される。
・実行対象ファイル５０１の挙動ログから選択されたコマンドとパラメータに基づいて、少なくとも１つの挙動パターンを形成する。このとき、上記挙動パターンは、少なくとも１つのコマンドと１つのパラメータからなる組であり、上記パラメータは、上記組からのコマンド全てを表す。
・形成された全ての挙動パターンの畳み込みを計算する。
・形成した畳み込みを、実行対象ファイルの悪意性程度計算モジュール５４０に送信する。
【０２００】
システムの別の一態様において、形成した挙動パターンの畳み込みは、所定の畳込関数に基づいて計算され、その結果、形成した挙動パターン全てに対して実行した上記畳み込み関数の結果の逆畳み込み関数は、所定の閾値よりも大きい、上記挙動パターンとの類似性の程度を有する。
【０２０１】
畳み込み関数の形成および使用（畳み込みの計算）については、図１および図２において、より詳細に説明する。
【０２０２】
悪意性程度計算モジュール５４０は、下記のように設計される。
・得られた、悪意あるファイル検出用各モデルを使用し、得られた畳み込みの分析に基づいて、実行対象ファイル５０１の悪意性の程度を計算する。
・計算された各悪意性の程度を分析モジュール５５０に送信する。
【０２０３】
システムの別の一態様において、決定テンプレートは、悪意性の程度で構成される。
【０２０４】
たとえば、上述したモデル１、２、３に基づいて計算された悪意性の程度の構成は、それぞれ、ペア｛0.95,  374｝、｛0.79,  288｝、｛0.87,  302｝の集合として表すことができる。
【０２０５】
さらに別の例において、上記モデル１、２、３、に基づいて計算された悪意性の程度の構成は、計算された悪意性の程度の中心的傾向の基準（０．８７の場合は、算術平均）を表す。
【０２０６】
さらに別の例において、悪意性の程度の構成は、時間関数としての悪意性の程度における変化か、または悪意性の程度を計算するために用いられた挙動パターンの数における変化を表す。
【０２０７】
分析モジュール５５０は、下記のように設計される。
・得られた悪意性の程度に基づいて決定テンプレートを形成する。
・形成された決定テンプレートと、悪意あるファイルの分析に基づいて事前に形成された、決定テンプレートデータベース５４１から選択される所定の決定テンプレートの少なくとも１つとの間の類似性の程度が、所定の閾値を超える場合、実行対象ファイル５０１を悪意あるものとみなす。
【０２０８】
システムの別の一態様において、決定テンプレートは、悪意性程度計算モジュール５４０から得られた悪意性の程度の集合である。
【０２０９】
システムの別の一態様において、決定テンプレートは、時間関数としての悪意性の程度であるか、または、悪意性の程度を計算するのに用いた挙動パターンの数である。
【０２１０】
システムの別の一態様において、決定テンプレートデータベース５４１からの決定テンプレートは、検出モデルデータベース５２１からのモデルの訓練に使用した悪意あるファイルの分析に基づいて、形成される。
【０２１１】
たとえば、７５，０００個の安全なファイルと、２５，０００個の悪意あるファイルからなる、１００，０００個のファイルに基づいて、検出モデルを訓練（試験を含む）し、その後、検出モデルデータベース５２１に保存する。悪意あるファイルを検出するためのモデルを訓練した後、上記モデルを使用して、２５，０００個の上記悪意あるファイルのうちのいくつか（または全て）に対して決定テンプレートを形成し、その後、決定テンプレートデータベース５４１に入力する。すなわち、悪意あるファイル検出用モデルによる機械学習を、まず、ファイルの学習および試験サンプルに対して実施する。その結果、悪意あるファイル検出用のモデルのいくつかを訓練することができ、所定の固有の特性を備えた悪意あるファイルを検出するために、各モデルを訓練する。検出モデルの全てを訓練した後、悪意あるファイル検出用に訓練されたモデルのうち、どのモデルが、ある悪意あるファイル（上記例においては、２５，０００個の上記悪意あるファイル）を検出するかを判定する。これにより、ある悪意あるファイルを、ある１組の悪意あるファイル検出用モデルを用いて検出することができ、別の悪意あるファイルを、別の１組の悪意あるファイル検出用モデルを用いて検出することができ、さらに別の悪意あるファイルを、悪意あるファイル検出用の上記モデルから選択された、いくつかの、悪意あるファイル検出用モデルを用いて検出することができることがわかる。悪意あるファイル検出用のどのモデルを用いれば、どの悪意あるファイルを検出することができるかに関して得られたデータに基づいて、決定テンプレートを形成する。
【０２１２】
システムの別の一態様において、分析モジュール５５０は、さらに、以下のように設計される。形成した決定テンプレートと、決定テンプレートデータベース５４１から選択される所定の決定テンプレートの少なくとも１つとの類似性の程度が、所定の閾値を超え、一方で、悪意あるファイル検出用の上記モデルを用いて計算した悪意性の程度が、所定の閾値を超えない場合に、実行対象ファイル５０１の挙動ログから選択されたコマンドとパラメータに基づいて、検出モデルデータベース５２１からの少なくとも１つの検出モデルを再訓練する。
【０２１３】
図６は、悪意あるファイルを検出するために訓練されたモデルを使用して、悪意あるファイルを検出する方法の構成図である。
【０２１４】
悪意あるファイルを検出するために訓練されたモデルを用いて悪意あるファイルを検出するための方法の構成図は、分析対象ファイルを実行するステップ６１０と、挙動ログを形成するステップ６２０と、挙動パターンを形成するステップ６３０と、畳み込みを計算するステップ６４０と、検出モデルを選択するステップ６５０と、悪意性の程度を計算するステップ６６０と、決定テンプレートを形成するステップ６７０と、上記ファイルに悪意があると認識するステップ６８０と、上記検出モデルを再訓練するステップ６９０と、を含む。
【０２１５】
ステップ６１０において、挙動ログ形成モジュール１１２を用いて、少なくとも、
・分析対象ファイル５０１を実行するか、または、
・分析対象ファイル５０１の実行をエミュレートする。
【０２１６】
ステップ６２０において、挙動ログ形成モジュール１１２を用いて、分析対象ファイル５０１のための挙動ログを形成する。そのために、
・少なくとも１つの実行対象コマンドをインターセプトし、
・インターセプトされた各コマンドに対して、上記コマンドを表す、少なくとも１つのパラメータを決定し、
・インターセプトされたコマンドと上述したように決定したパラメータに基づいて、上記ファイル５０１の挙動ログを形成する。
【０２１７】
ステップ６３０において、挙動ログ分析モジュール５３０を用いて、実行対象ファイル５０１の挙動ログから選択されたコマンドとパラメータに基づいて、少なくとも１つの挙動パターンを形成する。このとき、上記挙動パターンは、少なくとも１つのコマンドと１つのパラメータからなる組であり、上記パラメータは、上記組からのコマンド全てを表す。
【０２１８】
ステップ６４０において、挙動ログ分析モジュール５３０を用いて、ステップ６３０で形成した全ての挙動パターンの畳み込みを計算する。
【０２１９】
ステップ６５０において、検出モデル選択モジュール５２０を用いて、実行対象ファイル５０１の挙動ログから選択されたコマンドとパラメータに基づいて、検出モデルデータベース５２１から、悪意あるファイル検出用モデルを少なくとも２つ選択する。このとき、上記悪意あるファイル検出用モデルは、悪意性の程度を判定するための決定ルールである。
【０２２０】
ステップ６６０においては、ステップ６５０で選択された悪意あるファイル検出用の各モデルを使用して、ステップ６４０で計算した畳み込みの分析に基づき、悪意性程度計算モジュール５４０を用いて、実行対象ファイル５０１の悪意性の程度を計算する。
【０２２１】
ステップ６７０においては、ステップ６６０で得られた悪意性の程度に基づき、分析モジュール５５０を使用して決定テンプレートを形成する。
【０２２２】
ステップ６８０においては、ステップ６７０で形成した決定テンプレートと、決定テンプレートデータベース５４１から選択された、少なくとも１つの所定の決定テンプレートとの類似性の程度が、所定の閾値を超える場合、分析モジュール５５０を用いて、実行対象ファイル５０１を悪意あるものとみなす。
【０２２３】
ステップ６９０においては、形成した決定テンプレートと、決定テンプレートデータベース５４１から選択された、少なくとも１つの所定の決定テンプレートとの類似性の程度が、所定の閾値を超え、一方、悪意あるファイル検出用の上記モデルを使用して計算した悪意性の程度が、所定の閾値を超えない場合に、実行対象ファイルの挙動ログから選択されたコマンドとパラメータに基づいて、分析モジュール５５０を用いて、検出モデルデータベース５２１からの少なくとも１つの検出モデルを再訓練する。
【０２２４】
図７は、悪意あるファイルを検出するシステムの一例を示す。
【０２２５】
悪意あるファイルを検出するためのシステムの構成図は、分析対象ファイル５０１と、ファイル分析モジュール１１２と、検出モデルデータベース５２１と、データ収集モジュール７１０と、上記ファイル５０１の挙動に関するデータ７１１と、パラメータ計算モジュール７２０と、パラメータ計算モデル７２１と、分析モジュール７３０と、基準形成モデル７３１と、パラメータ補正モジュール７４０と、を含む。
【０２２６】
ファイル分析手段１１２、ファイル５０１、検出モデルデータベース５２１、および（分析モジュール５５０の異なる態様としての）分析モジュール７３０について、図１、図２、図５、および図６において、より詳細に説明する。
【０２２７】
データ収集モジュール７１０は、ファイル分析モジュール１１２によって収集されたファイル５０１の実行挙動に関するデータ７１１に基づいて、その挙動を特徴づける特徴ベクトルを形成するよう設計される。このとき、上記ベクトルの特徴は、数の集合として形成され、収集されたデータ７１１の畳み込みである。
【０２２８】
収集したデータの畳み込みの形成例は、図１における挙動パターン形成モジュール１２１の動作についての説明の中で示される。
【０２２９】
システムの別の一態様において、ファイル５０１の実行挙動に関するデータ７１１は、少なくとも、以下のものを含む。
・実行対象ファイル５０１に含まれる、またはファイル５０１の実行のプロセスで解釈可能なコマンド、上記コマンドに送信される属性、および戻り値。
・ファイル５０１の実行中に変更可能な、ＲＡＭの領域に関するデータ。
・ファイル５０１の静的パラメータ。
【０２３０】
たとえば、上記コマンドは、コンピュータのプロセッサの命令（もしくは命令群）、ＷｉｎＡＰＩ関数、または、第三者の動的ライブラリからの関数である。
【０２３１】
さらに別の例において、ファイル５０１は、プロセッサコマンド（またはｄｌｌライブラリの場合、あるプロセスのコマンド）および／またはコマンドに転送されるパラメータとしてファイル５０１の実行中に解釈される、生データを含む。特に、そのようなデータはポータブルコードでありうる。
【０２３２】
さらに別の例において、ＲＡＭ領域のデータは、以下のものであってもよい。
・（たとえば、ファジーハッシュの使用による）上記データのメモリ領域の畳み込み。
・上記メモリ領域からどの語彙素が抽出されたか、また、その使用（たとえば、使用頻度、加重特性、他の語彙素との関係など）に関して、どのような統計が収集されたかに基づいた、上記データのメモリ領域の語彙分析の結果。
・サイズ、オーナ（プロセス）、および使用権など、上記メモリ領域の静的パラメータ。
【０２３３】
ファイル５０１の静的パラメータは、ファイルを特徴づけ（識別する）、かつ、ファイル５０１の実行、分析、または変更中に変化しないか、または、ファイル５０１を実行する時までファイル５０１を特徴づける、パラメータである。
【０２３４】
特に、例えば、ファイル５０１の静的パラメータは、ファイル５０１の実行または挙動の特性に関する情報（すなわち、ファイル５０１の実行の結果を予測することを可能にする情報）を含んでいてもよい。
【０２３５】
さらに別の例において、ファイルの静的パラメータは、ファイルのサイズ、ファイルを作成または変更する時間、ファイルのオーナ、および、ファイルの資源（電子またはＩＰアドレス）などである。
【０２３６】
システムの別の一態様において、ファイル５０１の実行挙動に関するデータ７１１は、様々な資源（入力データチャンネル）から収集され、少なくとも、以下のものを含む。
・分析対象ファイル５０１によって実行されたコマンドのログ。
・オペレーティングシステム、またはオペレーティングシステムの管理下で実行されるアプリケーション（分析対象ファイル５０１を除く）によって、実行されるコマンドのログ。
・コンピュータネットワークを介して得たデータ。
【０２３７】
データ収集モジュール７１０によって形成された特徴ベクトルに基づいて、訓練されたパラメータ計算モデル７１１を用いて、悪意性の程度および安全性の限界程度を計算するように、パラメータ計算モジュール７２０は設計される。上記悪意性の程度は、ファイル５０１に悪意があると判明する確率を特徴づける数値である。上記安全性の限界程度は、悪意性の程度および安全性の限界程度に依存する（図９参照）所定の条件が満たされる場合にファイル５０１が間違いなく安全である確率を特徴づける数値である。連続して計算される上記各程度の収集は、所定の時間法則によって表される。
【０２３８】
システムの別の一態様において、入力データ（入力データ源、または所定の基準によって選別された出力データ源からのデータ）の各チャンネルに対して、（長さＮの実数のベクトルを有する）特徴を抽出するためのシステムを作成する。すなわち、
・所与のチャンネルが、情報（たとえば、アンパックされた実行対象ファイルのログまたはシーケンス）を連続して得ることに関連する場合、入力シーケンスに対する特徴を単一のベクトルへと集合させるために、システムを追加で作成する。
・システムを作成して、所与のチャンネルからの特徴を長さＫの新しいベクトルに変換する。さらに、このベクトルにおける値は、入力シーケンスの新しい要素が加工されると、単に単調に増加することがある。
【０２３９】
システムの別の一態様において、特徴の抽出、集合、および変換用のシステムは訓練用パラメータに依存することがあり、パラメータは、モデル全体を訓練するステップにおいて後で調節される。すなわち、
・全てのアクティブチャンネルから到着する、長さＫのベクトルは、特定の長さを有する１つのベクトルに、単調に集められる（例えば、最大値は素子毎に得られる）。
・集められた、単調に増加するベクトルは、１つの実数に変換され、上記実数は、調査対象プロセスの疑わしい性質を特徴づける（たとえば、上記ベクトルは、そのベクトルの要素を追加することによって、または、ベクトルのノルムを計算するなど、所定のアルゴリズムに従ってベクトルの要素に対してアクションを実行することによって、変換される）。
【０２４０】
システムの別の一態様において、パラメータ計算モデル７２１は、少なくとも１つの安全なファイルおよび１つの悪意あるファイルに関する機械学習法によって、あらかじめ訓練されている。
【０２４１】
システムの別の一態様において、パラメータを計算するためのモデル７２１を用いた機械学習法は、少なくとも
・決定木に基づいた勾配ブースティング、
・決定木、
・ｋ近傍法、
・サポートベクトル、
である。
【０２４２】
システムの別の一態様において、少なくとも、計算される悪意性の程度または安全性の限界程度は、それぞれ、ファイル５０１の静的データの分析に基づいて、ファイル５０１の開始時に計算される悪意性の程度および安全性の限界程度に依存する。
【０２４３】
たとえば、悪意性の程度および安全性の限界程度を、下記の式によって計算してもよい。
【数２７】
2020115320.tif 000030
式中、
ωは、悪意性の程度を表し、φは、安全性の限界程度を表す。
【０２４４】
ω０は、悪意性の程度の開始値を表し、φ０は、安全性の限界程度の開始値を表し、上記開始値はそれぞれ、ファイル５０１の実行パラメータには依存しないが、外部条件（オペレーティングシステムの作動パラメータなど）には依存する。
【０２４５】
ω（ｔ）は、悪意性の程度を計算するのに使用される時間法則を表し、φ（ｔ）は、安全性の限界程度を計算するのに使用される時間法則を表す。
【０２４６】
さらに、上記時間法則は、互いに依存する、すなわち、事前に計算された、悪意性の程度および安全性の限界程度に依存する。
【数２８】
2020115320.tif 000031
【０２４７】
図９に、上述したシステムの別の態様について、より詳細に開示する。
【０２４８】
システムの別の一態様において、訓練されたパラメータ計算モデル７２１は、ファイルの悪意性の程度およびファイルの安全性の限界程度を計算するためのルールを集めたものであり、ファイル５０１の実行挙動に関して見出されたデータ７１１に依存する。
【０２４９】
システムの別の一態様において、連続的に計算された悪意性の程度群と連続的に計算された安全性の限界程度群を示す時間法則は、本質的に単調である。
【０２５０】
たとえば、時間関数として悪意性の程度を表す曲線は、単調に増加する関数（ｆ（ｘ）＝ａｘ＋ｂなど）によって表されてもよい。
【０２５１】
システムの別の一態様において、連続的に計算された悪意性の程度群と連続的に計算された安全性の限界程度群を示す時間法則は、区分的に単調な性質を有する、すなわち、特定の時間間隔において単調な性質を有する。
【０２５２】
説明したシステムの作動中に、（計算資源に関する制限、コンピュータ時間、最小性能などに関する要求により）、悪意性の程度を絶えず（連続的に、または、所与の周期で）判定することはできないことが多く、したがって、悪意性の程度および安全性の限界程度は、計算可能な時間の間隔（所定のものではないが、ファイル５０１の実行のプロセスにおいて計算することができる）において計算されうる。そのような計算もまた、ある所定の時間法則に基づいており、そのため、入力パラメータはファイルの実行のプロセス中に計算される。すなわち、ファイルの計算時に書き込むことが可能である。
【数２９】
2020115320.tif 000032
【０２５３】
さらに、悪意性の程度および安全性の限界程度を計算する時間は、事前に計算した悪意性の程度および安全性の限界程度に依存する。
【数３０】
2020115320.tif 000033
【０２５４】
たとえば、ファイル５０１が開始され、最初の１０秒間、上記ファイルの悪意性の程度は単調に増加し、１０秒後に、上記ファイルの悪意性の程度は半分となり、その後、もう一度単調に増加し始める。
【０２５５】
分析モジュール７３０は、ファイル５０１の実行挙動について収集されたデータ７１１が、パラメータ計算モジュール７２０によって計算されるように悪意性の程度および安全性の限界程度に基づいて構築される、悪意性を判定するための所定の基準を満たす場合に、悪意あるファイル５０１の検出に関して判定するよう設計される。このとき、悪意性の程度と安全性の限界程度との間に確立される相関性という点において、上記基準は、（基準形成モデル７３１によって提供される）ファイルの分類のためのルールである。
【０２５６】
システムの別の一態様において、悪意性の程度と安全性の限界程度との間の相関性は、少なくとも、
・悪意性の程度と悪意性の境界条件の間の隔たりについての所定の閾値からの差、
・悪意性の程度および安全性の限界程度を表す曲線間の所与の時間間隔に結びつけられる領域の所定の閾値からの差、
・時間関数として悪意性の程度および悪意性の境界条件を表す曲線の相互増加率の所定値からの差、
である。
【０２５７】
たとえば、上記相関性の最も特徴的な例を図９に示す。
【０２５８】
計算した悪意性の程度および安全性の限界程度の分析（図９参照）に基づき、パラメータ補正モジュール７４０は、パラメータ計算モデル７２１を再訓練するよう設計されている。その結果、悪意性の程度および安全性の限界程度を表す時間法則が変化すると、上記時間法則に基づいて得られた値の相関性が最大に向かう傾向がある。
【０２５９】
システムの別の一態様において、パラメータ計算モデル７２１は、上記モデルを使用すると、のちに形成される基準が少なくとも下記のことを確実にするように、再訓練される。
・悪意性の程度および安全性の限界程度を判定する精度は、訓練されていないパラメータ計算モデルを使用する場合よりも高い。
・計算資源の利用率が、訓練されていないパラメータ計算モデルを使用する場合よりも低い。
【０２６０】
たとえば、再訓練（またはさらなる再訓練）後に、悪意性の程度および安全性の限界程度を表す曲線の値間の相関係数は、より大きくなる（１に向かう傾向がある）。
【０２６１】
その結果、パラメータ計算モデル７２１を定期的に再訓練している間、第１および第２種（偽陽性）のエラーの発生の確率は、常に低くなる。さらに、上述した様々な再訓練の基準を用いることによって、再訓練されたモデル７２１を用いて悪意あるファイルを検出するためのシステムは、最初（再訓練の初期段階）に第１および第２種のエラーの低下率が非常に高くなり、その結果、パラメータ計算モデル７２１の再訓練をほとんど繰り返すことなく、悪意あるファイル検出用システムの有効性が、１００％に向かって急激に増加することが確実となる。
【０２６２】
図８は、悪意あるファイルを検出する方法の例を示す。
【０２６３】
悪意あるファイルを検出するための方法の構成図は、特徴ベクトルを形成するステップ８１０と、パラメータを計算するステップ８２０と、悪意あるファイルの検出に関する判定をするステップ８３０と、パラメータ計算モデルをさらに再訓練するステップ８４０と、を含む。
【０２６４】
ステップ８１０において、ファイル５０１の実行挙動に関して収集したデータ７１１に基づいて、ファイルの実行挙動を特徴づける特徴ベクトルを形成し、上記特徴ベクトルは、数の集合の形をとる収集データの畳み込みである。
【０２６５】
ステップ８２０において、上記のように形成した特徴ベクトルに基づき、訓練されたパラメータ計算モデル７２１を使用して、悪意性の程度、および安全性の限界程度を計算する。このとき、上記悪意性の程度は、ファイル５０１に悪意があると判明する確率を特徴づける数値であり、上記安全性の限界程度は、ファイル５０１に悪意があると明確に判明する確率を特徴づける数値である。連続的に計算された上記程度群は所定の時間法則によって説明される。
【０２６６】
ステップ８１０〜８２０は、様々な連続する、分析対象ファイル５０１の実行の時間間隔に対して行われる。
【０２６７】
ステップ８３０において、ファイル５０１の実行挙動について収集されたデータ７１１が、ステップ８２０において計算されるように悪意性の程度および安全性の限界程度に基づいて構築される、悪意性を判定するための所定の基準を満たす（図９参照）場合に、悪意あるファイル５０１の検出に関する判定がなされる。上記基準は、悪意性の程度と安全性の限界程度との間に確立した相関性によりファイルを分類するためのルールである。
【０２６８】
ステップ８４０において、計算された悪意性の程度および安全性の限界程度の分析に基づいて、パラメータ計算モデル７２１は、さらに再訓練され、その結果、悪意性の程度および安全性の限界程度を表す時間法則が変化すると、その法則に基づいて得られた値の相関性が最大に向かう傾向がある。
【０２６９】
図９は、挙動パターンの数の関数としての、悪意性の程度と安全性の限界程度の変化の動態例を示す。
【０２７０】
図９１１では、分析対象ファイル５０１の悪意性の程度が、時間の経過とともに、増加（本質的には、公式化された挙動パターンの数の増加）する様子が観察されるという状況が示されている。さらに、増加は、安全性の限界程度においても（図３に示す悪意性の基準の一般的な場合）同様に観察される。
【０２７１】
悪意あるファイル５０１の程度がファイル５０１の安全性の限界程度（図９１１のＢ）を超え始めたときに、悪意あるファイル５０１の検出に関する判定が行われる。
【０２７２】
ファイル５０１の実行中にも、また、全体としてのオペレーティングシステムの条件の分析の際にも、「疑わしい」活動が示される場合に、上記のような状況が観察される。このようにして、第１種のエラーが発生する確率は低くなる。たとえ疑わしい活動がシステムの作動中に示されても（すなわち、悪意があるとはまだみなすことができないが、安全であるとも見なすことができない活動、たとえば、初期ファイルの削除が追って行われるアーカイブパッキング）、ファイル５０１の悪意性の程度を計算する際、悪意あるファイルの検出に関して肯定的な判定が、ファイル５０１の実行中ではなくシステムの作動中の疑わしい活動に、大抵の場合、基づかずになされるようにして、上記活動は認識される。すなわち、ファイル５０１を悪意あるものとして認識することに関する最終判定に、ファイル５０１の実行活動が貢献する度合いは、システムの活動の貢献度よりも大きい。
【０２７３】
たとえば、ユーザがコンピュータ上のデータのアーカイビングを行い、その結果、ハードディスクからデータを繰り返し読み出し、その後、ファイルの名称変更または削除が行われる場合に、同様の状況が観察されうる。これは、一般利用者（事務員など）のシステムに対して、悪意ある暗号化プログラムが作動している疑わしい活動とみなされうる。なぜなら、（ユーザから得られた統計データに基づいた）そのような活動は、ユーザに対しては、めったに観察されないからである。
【０２７４】
たとえば、ユーザコンピュータ上のソフトウェアの活動の分析中に、標準ウイルス撃退アプリケーションは、特定のアプリケーションが「疑わしい」挙動をしている、すなわち、特定のアプリケーションの挙動がウイルス撃退アプリケーションの所定のルールに従っていないという警告を、（いずれの積極的対策もとらずに）発することがある。しかし、上述したシステムは、所定のルールによって動作せず、代わりに、動的に活動の変化を評価し、その結果、悪意があるが未知であるファイル５０１に対して、そのファイルを悪意あるものとして検出する。
【０２７５】
さらに別の例において、ファイル５０１を実行する際の活動の変化は、コンピュータネットワークにおけるデータ送信の結果であり、送信されるデータの特性（頻度、量など）に依存し、また、悪意ある活動が行われている（たとえば、リモート管理（バックドア）不正プログラムが走っている）ことを示しうる。そのような活動が長引けば、上記活動に悪意があるとみなされる可能性はより高くなる。なぜなら、上記活動は、ユーザコンピュータ上の典型的なネットワーク活動とは顕著に異なるからである。
【０２７６】
図９１２において、時間の経過とともに、分析対象ファイル５０１の悪意性の程度が増加し、安全性の限界程度が減少している様子が観察されるという状況が示されている。
【０２７７】
悪意あるファイル５０１の程度がファイル５０１の安全性の限界程度（図９１２のＢ）を超え始めたときに、悪意あるファイル５０１の検出に関する判定が行われる。
【０２７８】
図９１１に描写されている状況とは逆であるが、オペレーティングシステムの条件の分析中に「疑わしい」活動が観察されない場合に、上記のような状況が確認される。このようにして、第２種のエラー（悪意あるファイルの見落とし）が発生する確率は低くなる。特にファイルまたは全体としてのオペレーティングシステムの実行中、挙動の残りが「疑わしい」とみなされない場合、疑わしい活動は、悪意あるファイルの検出について肯定的な判定を下すことに、「より強い」影響を及ぼす。
【０２７９】
たとえば、そのような状況は、ユーザコンピュータ上のリモート管理不正プログラムの作動中に観察されることがあり、上記プログラムの結果、悪意ある活動が、偶発的にのみ現われる、すなわち、連続する上記活動の発生毎に、より「詳細に」分析されるべきである、つまり、活動に悪意があるとみなす基準は絶えず低下するはずである。しかし、信頼できるアプリケーションをユーザコンピュータ上で実行し始める場合に、そのアプリケーションの挙動は、疑わしいとみなされる可能性があるが、そのアプリケーションは信頼できる（つまり、事前に悪意性があるかどうかを検査されている）ものであるため、疑わしいとはみなされず、その後、悪意性の限界度は高くなり、それによって、正当なファイルの挙動を悪意あるものとして認識してしまうことを防ぎ、かつ、悪意あるファイルの悪意ある挙動の検知をただ遅らせる。
【０２８０】
図９１３において、時間の経過とともに、分析対象ファイル５０１の悪意性の程度の増加が観察され、上記増加は、ゼロではなく、ある計算値から始まり、その結果、悪意性の基準に初期の場合よりも早く到達するか、または、初期の場合には到達していなかったであろうことに対して、上記基準に到達するという状況が描写されている。
【０２８１】
悪意あるファイル５０１の程度とファイル５０１の安全性の限界程度との差が、所定の閾値（図９１３のＢ）未満になった場合に、悪意あるファイル５０１の検出に関する判定が行われる。さらに、特に、例えば、悪意あるファイル５０１の程度とファイル５０１の安全性の限界程度との差が、過去に別の所定の閾値（図９１３のＡ）より小さかった（図９１３のАと図９１３のＢとの差が大きくなりえた）場合にのみ、上記の判定が行われる。
【０２８２】
たとえば、未知の資源から得たか、または「疑わしい」方法（プロセスのメモリからデータをディスクに書き込むなど）によってコンピュータ上で形成したファイル５０１の実行中は、悪意性の程度は、より「疑わしくない」方法によって得られたファイルの悪意性の程度より最初は高いことがある。
【０２８３】
図９１４において描写されている状況は、図９１１に描かれた状況と類似しており、唯一の違いは、悪意性の程度を表す曲線と安全性の限界程度を表す曲線は、連続していくつかの点で交差しているということである。そのような状況において、ファイル５０１を悪意あるものとしてみなす判定がなされるのは、上記曲線が交差しているという事実によるのではなく、交点の数により所定の閾値を超えたため、または、上記曲線によって切り取られた領域により所定の閾値を超えたためである。
【０２８４】
上述したこれらの図は、悪意あるファイルの検出の有効性を高め、かつ、悪意あるファイル５０１を検出するに際し、第１および第２種のエラーを減少させるのに役立つ。
【０２８５】
計算された悪意性の程度と安全性の限界程度との相関性の説明およびファイル５０１を悪意あるものとしてみなすことに関する決定は、下記の数学的またはアルゴリズム的な形で表現されうる。
【数３１】
2020115320.tif 000034
【０２８６】
図５は、一態様例に従って、悪意あるファイルを検出するためのシステムと方法の態様が実施されるコンピュータシステム２０を示すブロック図である。なお、コンピュータシステム２０は、上述したシステム１００のいずれの構成要素にも相当しうる。コンピュータシステム２０は、複数のコンピュータデバイスの形、または、単一のコンピュータデバイス、たとえば、デスクトップコンピュータ、ノート型コンピュータ、ラップトップコンピュータ、モバイルコンピューティングデバイス、スマートフォン、タブレットコンピュータ、サーバ、メインフレーム、埋込み型デバイス、およびその他の形のコンピュータデバイスなどの形をとりうる。
【０２８７】
図示するように、コンピュータシステム２０は、中央処理装置（Central  Processing  Unit：ＣＰＵ）２１と、システムメモリ２２と、システムバス２３とを含み、システムバス２３は、中央処理装置２１と連携するメモリを含む様々なシステム構成要素を接続する。システムバス２３は、バスメモリまたはバスメモリコントローラと、周辺バスと、ローカルバスとを含んでもよく、上記ローカルバスは、他のバスアーキテクチャと相互作用することができる。上記バスの例として、ＰＣＩ、ＩＳＡ、ＰＣＩ−Ｅｘｐｒｅｓｓ、ＨｙｐｅｒＴｒａｎｓｐｏｒｔ（登録商標）、ＩｎｆｉｎｉＢａｎｄ（登録商標）、Ｓｅｒｉａｌ  ＡＴＡ、Ｉ２Ｃ，および、他の好適な相互接続が挙げられる。中央処理装置２１（プロセッサとも称される）は、単一または複数のコアを有する１組または複数の組のプロセッサを含みうる。プロセッサ２１は、本開示の技術を実行する１つ以上のコンピュータ実施可能コードを実行してもよい。システムメモリ２２は、本開示において使用されるデータ、および／またはプロセッサ２１によって実行可能なコンピュータプログラムを格納するための任意のメモリであってもよい。システムメモリ２２は、ＲＡＭ２５などの揮発性メモリと、読み取り専用メモリ（Read  Only  Memory：ＲＯＭ）２４、フラッシュメモリ、またはこれらの組み合わせなどの不揮発性メモリと、を含んでもよい。基本入出力システム（Basic  Input/Output  System：ＢＩＯＳ）２６は、ＲＯＭ２４を使用してオペレーティングシステムをローディングする際の要素など、コンピュータシステム２０の要素間での情報の転送のための基本手続きを格納してもよい。
【０２８８】
コンピュータシステム２０は、１つ以上の記憶装置、たとえば、１つ以上の取り外し可能な記憶装置２７、１つ以上の取り外し不可能な記憶装置２８、または、これらの組合せなどを含んでもよい。１つ以上の取り外し可能な記憶装置２７および１つ以上の取り外し不可能な記憶装置２８は、ストレージインターフェース３２を介してシステムバス２３に接続される。一態様において、記憶装置、および上記記憶装置に対応するコンピュータ可読記憶媒体は、コンピュータ命令、データ構造、プログラムモジュール、およびコンピュータシステム２０の他のデータを格納するための電源非依存モジュールである。システムメモリ２２、取り外し可能な記憶装置２７、および取り外し不可能な記憶装置２８は、様々なコンピュータ可読記憶媒体を使用してもよい。コンピュータ可読記憶媒体として、たとえば、キャッシュ、ＳＲＡＭ、ＤＲＡＭ、ゼロコンデンサＲＡＭ、対トランジスタＲＡＭ、ｅＤＲＡＭ、ＥＤＯ  ＲＡＭ、ＤＤＲ  ＲＡＭ、ＥＥＰＲＯＭ、ＮＲＡＭ、ＲＲＡＭ（登録商標）、ＳＯＮＯＳ、ＰＲＡＭなどの機械メモリ、ソリッドステートドライブ（Solid  State  Drive：ＳＳＤ）もしくはフラッシュドライブなどにおける、フラッシュメモリまたは他のメモリ技術、ハードディスクドライブまたはフロッピーディスクなどにおける、磁気カセット、磁気テープ、および磁気ディスク記憶装置、コンパクトディスク（Compact  Disk：ＣＤ−ＲＯＭ）またはデジタルバーサタイルディスク（Digital  Versatile  Disk：ＤＶＤ）などにおける光記憶装置、および、所望のデータを格納するのに使用され、コンピュータシステム２０によってアクセス可能な他の媒体が挙げられる。
【０２８９】
コンピュータシステム２０の、システムメモリ２２、取り外し可能な記憶装置２７、および、取り外し不可能な記憶装置２８を使用して、オペレーティングシステム３５、追加のプログラムアプリケーション３７、他のプログラムモジュール３８、およびプログラムデータ３９を格納してもよい。コンピュータシステム２０は、キーボード、マウス、スタイラス、ゲームコントローラ、音声入力装置、タッチ入力装置などの入力装置４０、もしくは、シリアルポート、パラレルポート、ユニバーサルシリアルバス（Universal  Serial  Bus：ＵＳＢ）などの１つ以上のＩ／Ｏポートを介するプリンタまたはスキャナーなどの他の周辺機器からのデータを通信するための周辺インターフェース４６、または他の周辺インターフェースを含んでもよい。１つ以上のモニタ、プロジェクタ、または統合ディスプレイなどの表示装置４７も、ビデオアダプタなどの出力インターフェース４８を介して、システムバス２３に接続してもよい。表示装置４７に加えて、コンピュータシステム２０は、スピーカおよび他の視聴覚装置などの他の周辺出力デバイス（図示せず）を備えていてもよい。
【０２９０】
コンピュータシステム２０は、１つ以上のリモートコンピュータ４９とのネットワーク接続を用いて、ネットワーク環境で操作してもよい。リモートコンピュータ（またはコンピュータ）４９は、コンピュータシステム２０の性質を表す上で、上述の要素の大半または全てを含む、ローカルコンピュータワークステーションまたはサーバであってもよい。ルータ、ネットワークステーション、ピア接続の機器、または他のネットワークノードなどの他の装置もまた、コンピュータネットワークで存在しうるが、これらに限定されない。コンピュータシステム２０は、ローカルエリアコンピュータネットワーク（Local-Area  Computer  Network：ＬＡＮ）５０、ワイドエリアコンピュータネットワーク（Wide-Area  Computer  Network：ＷＡＮ）、イントラネット、および、インターネットなどの１つ以上のネットワークを介してリモートコンピュータ４９と通信するための、１つ以上のネットワークインターフェース５１またはネットワークアダプタを含んでいてもよい。ネットワークインターフェース５１として、たとえば、イーサネット（登録商標）インターフェース、フレームリレーインターフェース、ＳＯＮＥＴインターフェース、および無線インターフェースが挙げられる。
【０２９１】
本開示の態様は、システム、方法、および／またはコンピュータプログラム製品であってもよい。コンピュータプログラム製品は、プロセッサに本開示の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含んでもよい。
【０２９２】
コンピュータ可読記憶媒体は、コンピュータシステム２０などのコンピュータデバイスのプロセッサがアクセスすることができる命令またはデータ構造の形をとるプログラムコードを保存格納することができる有形の装置でありうる。上記コンピュータ可読記憶媒体は、電子記憶装置、磁気記憶装置、光記憶装置、電磁気記憶装置、半導体記憶装置、またはこれらの任意の好適な組合せであってもよい。たとえば、そのようなコンピュータ可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ポータブルコンパクトディスク読み取り専用メモリ（Compact  Disc  Read-Only  Memory：ＣＤ−ＲＯＭ）、デジタルバーサタイルディスク（ＤＶＤ）、フラッシュメモリ、ハードディスク、ポータブルコンピュータディスケット、メモリスティック、フロッピーディスク、または、さらに、機械的に符号化された装置、たとえば、パンチカードもしくは命令が記録される溝における突起構造などを含んでもよい。本開示において用いられるように、コンピュータ可読記憶媒体は、それ自体が一時的な信号、たとえば、電波、自由に伝播する他の電磁波、導波管もしくは伝送媒体を介して伝播する電磁波、または、ワイヤを介して送信される電気信号であると解釈されるべきではない。
【０２９３】
本開示において説明したコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から、それぞれのコンピュータデバイスにダウンロードすることができるか、または、ネットワーク、たとえば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、および／または無線ネットワークを介して、外部コンピュータもしくは外部記憶装置にダウンロードすることができる。上記ネットワークは、銅製伝送ケーブル、光学伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、および／または、エッジサーバを含んでもよい。各コンピュータデバイスにおけるネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピュータデバイス内のコンピュータ可読記憶媒体に保管するために、コンピュータ可読プログラム命令を転送する。
【０２９４】
本開示の操作を実施するためのコンピュータ可読プログラム命令は、組立て命令、命令セットアーキテクチャ（Instruction-Set-Architecture：ＩＳＡ）命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状況設定データ、またはソースコードもしくはオブジェクトコードであってもよく、上記ソースコードまたは上記オブジェクトコードは、オブジェクト指向プログラミング言語および従来の手続き型プログラミング言語を含む、１つ以上のプログラミング言語の任意の組合せで表される。コンピュータ可読プログラム命令を、スタンドアローンのソフトウェアパッケージとして、完全にユーザコンピュータ上、もしくは部分的にユーザコンピュータ上で実施するか、または、部分的にユーザコンピュータかつ部分的にリモートコンピュータ上で実施するか、完全にリモートコンピュータもしくはサーバ上で実施してもよい。後者のケースでは、リモートコンピュータは、ＬＡＮもしくはＷＡＮを含む任意のタイプのネットワークを介して、ユーザコンピュータに接続してもよいし、または、上記接続は、外部コンピュータに対して（たとえば、インターネットを介して）行ってもよい。いくつかの態様において、プログラマブルロジック回路、書き換え可能ゲートアレイ（Field-Programmable  Gate  Array：ＦＰＧＡ）、またはプログラマブルロジックアレイ（Programmable  Logic  Array：ＰＬＡ）などを含む、電子回路は、本開示の態様を実施するために、電子回路を個別化するのに上記コンピュータ可読プログラム命令の状態情報を利用して、上記コンピュータ可読プログラム命令を実行してもよい。
【０２９５】
様々な態様において、本開示において説明したシステムおよび方法は、モジュールの観点から言及することができる。本開示において使用される「モジュール」という用語は、ハードウェアを用いて実装された、実世界の装置、構成要素、または構成要素の配置を指し、上記モジュールは、たとえば、特定用途向け集積回路（Application  Specific  Integrated  Circuit：ＡＳＩＣ）もしくはＦＰＧＡ、またはハードウェアとソフトウェアの組み合わせとして、たとえば、マイクロプロセッサシステムおよび（実行中に）マイクロプロセッサシステムを専用装置に変換する、モジュールの機能を実現するための１組の命令を用いて実行される。モジュールは、ハードウェア単体によって促進される一定の機能とハードウェアとソフトウェアの組み合わせによって促進される他の機能からなる２つの組み合わせとして実行されてもよい。ある実行において、モジュールの少なくとも一部、場合によっては、全部を、コンピュータシステムのプロセッサ（図１０において詳述したものなど）において実行してもよい。したがって、各モジュールを様々な好適な構成で実現してもよく、本開示に示した特定の実行に限られるものではない。
【０２９６】
明瞭化のために、態様のルーチンの特徴の全てが本明細書に開示されているわけではない。本開示のいずれの実際の実装の開発においても、開発者の特定の目標を達成するために多数の実装特有の決定が行われなければならず、これらの具体的な目標は、各種実装や各開発者に依って異なる。そのような開発努力は、複雑で時間がかかるが、本開示の恩恵を受ける当業者にとっては、日常的な工学的な取り組みであることが理解される。
【０２９７】
さらに、本開示において使用される表現または用語は、説明のためのものであって、限定するためのものではないことを理解されたい。その結果、当業者の知識と組み合わせ、本開示に提示される教示および指針に照らし合わせて、本明細書の用語または表現は当業者によって明白に解釈される。さらに、本明細書または特許請求の範囲におけるいずれの用語も、明示的に記載されていない限り、珍しいまたは特別な意味を有するとみなされることを意図するものではない。
【０２９８】
本開示における様々な態様は、説明によって本開示において言及された既知のモジュールの、現在および将来において既知となる等価物を包含する。さらに、態様および適用を示し、かつ説明してきたが、本開示の利益を有する当業者には、本明細書に開示された発明概念から逸脱することなく、上述した態様および適用よりも多くの変更が可能であることが明らかであろう。
【図１】
2020115320.tif 000035
【図２】
2020115320.tif 000036
【図３】
2020115320.tif 000037
【図４】
2020115320.tif 000038
【図５】
2020115320.tif 000039
【図６】
2020115320.tif 000040
【図７】
2020115320.tif 000041
【図８】
2020115320.tif 000042
【図９】
2020115320.tif 000043
【図１０】
2020115320.tif 000044
【外国語明細書】
2020115320000001.pdf