(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-02-10
(45)【発行日】2022-02-21
(54)【発明の名称】悪意あるファイルを検出するためのシステムおよび方法
(51)【国際特許分類】
G06F 21/56 20130101AFI20220214BHJP
【FI】
G06F21/56
【外国語出願】
(21)【出願番号】P 2019138879
(22)【出願日】2019-07-29
【審査請求日】2020-04-27
(32)【優先日】2018-12-28
(33)【優先権主張国・地域又は機関】RU
(32)【優先日】2019-05-17
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】515348585
【氏名又は名称】エーオー カスペルスキー ラボ
【氏名又は名称原語表記】AO Kaspersky Lab
(74)【代理人】
【識別番号】110002147
【氏名又は名称】特許業務法人酒井国際特許事務所
(72)【発明者】
【氏名】アレクサンダー エス.チスチャコフ
(72)【発明者】
【氏名】アレクセイ エム.ロマネンコ
(72)【発明者】
【氏名】アレクサンダー エス.シェヴェレフ
【審査官】平井 誠
(56)【参考文献】
【文献】特開2019-091411(JP,A)
【文献】RU 2659737 C1,2018年07月03日,pp.1-51
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/55-56
(57)【特許請求の範囲】
【請求項1】
悪意あるファイルを検出するための方法であって、
ハードウェアプロセッサが、コンピュータシステム内でのファイルの実行中、前記ファイルを監視する工程と、
前記ハードウェアプロセッサが、前記ファイルの前記実行中、挙動データに基づいて、特徴ベクトルを形成する工程であって、
前記特徴ベクトルの特徴は、前記挙動データを特徴づけ、
前記特徴ベクトルは、1組の数の形をとる前記挙動データの畳み込みを表す、
工程と、
前記ハードウェアプロセッサが、パラメータを計算するために訓練されたモデルを使用して、前記特徴ベクトルに基づいてパラメータを計算する工程であって、
前記パラメータは、i)前記ファイルに悪意がある確率を示す悪意性の程度と、ii)前記ファイルが安全であると明確に証明される確率を示す安全性の限界程度とを含み、
連続して計算された程度の集合は、所定の時間法則によって表される、
工程と、
前記ハードウェアプロセッサが、前記悪意性の程度および前記安全性の限界程度が所定の基準を満たす場合、前記ファイルに悪意があると判定する工程であって、
前記基準は、前記悪意性の程度と前記安全性の限界程度との間に確立する相関性に従って前記ファイルを分類するためのルールである、工程と、
を含む、方法。
【請求項2】
パラメータを計算するための前記モデルは、少なくとも1つの安全なファイルと1つの悪意あるファイルに対して行われる機械学習法によって訓練される、請求項1に記載の方法。
【請求項3】
前記機械学習法は、決定木に基づいた勾配ブースティング、決定木、k近傍法、およびサポートベクトル法のうちの1つである、請求項2に記載の方法。
【請求項4】
前記挙動データは、少なくとも、
前記ファイルによって実行されるコマンド、前記コマンドに送信される属性、および戻り値、
実行対象の前記ファイルによって変更されるランダムアクセスメモリ(Random Access Memory:RAM)領域に関するデータ、または、
前記ファイルの静的パラメータである、
請求項1に記載の方法。
【請求項5】
前記悪意性の程度に基づいて前記安全性の限界程度を計算する工程をさらに含み、
前記安全性の限界程度は、前記ファイルの起動時に、前記ファイルの静的パラメータ分析に基づいて計算する、
請求項1に記載の方法。
【請求項6】
パラメータを計算するために訓練された前記モデルは、前記挙動データに依存する、前記ファイルの前記悪意性の程度および前記ファイルの前記安全性の限界程度を計算するための1組のルールである、請求項1に記載の方法。
【請求項7】
前記悪意性の程度と前記安全性の限界程度の間の相関性は、少なくとも、
前記悪意性の程度と悪意性の境界条件の間の隔たりの所定閾値からの差、
前記悪意性の程度と前記境界条件の間の所与の時間間隔に結びつけられる領域の所定閾値からの差、または、
時間関数として前記悪意性の程度および前記悪意性の境界条件を表す曲線の相互増加率の所定値からの差である、
請求項1に記載の方法。
【請求項8】
パラメータを計算するための前記モデルを、計算した前記悪意性の程度および前記安全性の限界程度の分析に基づいて、さらに再訓練し、前記再訓練の結果、前記悪意性の程度および前記安全性の限界程度を表す前記時間法則における変化は、前記法則に基づいて得られた値の間の相関性が最大に向かう傾向があることを意味する、請求項1に記載の方法。
【請求項9】
パラメータを計算するための前記モデルを再訓練し、前記再訓練の結果、前記モデルを使用すると、後に形成される前記基準によって、少なくとも、
前記悪意性の程度および前記安全性の限界程度を判定する精度が、パラメータ計算用には訓練されていないモデルを使用する場合より高く、
計算資源の利用率が、パラメータ計算用には訓練されていないモデルを使用する場合より低くなる、
ことが確実となる、請求項1に記載の方法。
【請求項10】
悪意あるファイルを検出するためのシステムであって、
前記システムは、ハードウェアプロセッサを備え、
前記ハードウェアプロセッサは、
コンピュータシステム内でのファイルの実行中、前記ファイルを監視することと、
前記ファイルの前記実行中、挙動データに基づいて、特徴ベクトルを形成することであって、
前記特徴ベクトルの特徴は、前記挙動データを特徴づけ、
前記特徴ベクトルは、1組の数の形をとる前記挙動データの畳み込みを表す、ことと、
パラメータを計算するために訓練されたモデルを使用して、前記特徴ベクトルに基づいてパラメータを計算することであって、
前記パラメータは、i)前記ファイルに悪意がある確率を示す悪意性の程度と、ii)前記ファイルが安全であると明確に証明される確率を示す安全性の限界程度とを含み、 連続して計算された程度の集合は、所定の時間法則によって表される、ことと、
前記悪意性の程度および前記安全性の限界程度が所定の基準を満たす場合、前記ファイルに悪意があると判定することであって、
前記基準は、前記悪意性の程度と前記安全性の限界程度との間に確立する相関性に従って前記ファイルを分類するためのルールである、ことと、
を行うハードウェアプロセッサである、システム。
【請求項11】
パラメータを計算するための前記モデルは、少なくとも1つの安全なファイルと1つの悪意あるファイルに対して行われる機械学習法によって訓練される、請求項
10に記載のシステム。
【請求項12】
前記機械学習法は、決定木に基づいた勾配ブースティング、決定木、k近傍法、およびサポートベクトル法のうちの1つである、請求項
11に記載のシステム。
【請求項13】
前記挙動データは、少なくとも、
前記ファイルによって実行されるコマンド、前記コマンドに送信される属性、および戻り値、
実行対象の前記ファイルによって変更されるランダムアクセスメモリ(Random Access Memory:RAM)領域に関するデータ、または、
前記ファイルの静的パラメータである、
請求項
10に記載のシステム。
【請求項14】
前記ハードウェアプロセッサは、さらに、前記悪意性の程度に基づいて前記安全性の限界程度を計算し、
前記安全性の限界程度は、前記ファイルの起動時に、前記ファイルの静的パラメータ分析に基づいて計算される、
請求項
10に記載のシステム。
【請求項15】
パラメータを計算するために訓練された前記モデルは、前記挙動データに依存する、前記ファイルの前記悪意性の程度および前記ファイルの前記安全性の限界程度を計算するための1組のルールである、請求項
10に記載のシステム。
【請求項16】
前記悪意性の程度と前記安全性の限界程度の間の相関性は、少なくとも、
前記悪意性の程度と悪意性の境界条件の間の隔たりの所定閾値からの差、
前記悪意性の程度と前記境界条件の間の所与の時間間隔に結びつけられる領域の所定閾値からの差、または、
時間関数として前記悪意性の程度および前記悪意性の境界条件を表す曲線の相互増加率の所定値からの差である、
請求項
10に記載のシステム。
【請求項17】
パラメータを計算するための前記モデルを、計算した前記悪意性の程度および前記安全性の限界程度の分析に基づいて、さらに再訓練し、前記再訓練の結果、前記悪意性の程度および前記安全性の限界程度を表す前記時間法則における変化は、前記法則に基づいて得られる値の間の相関性が最大に向かう傾向があることを意味する、請求項
10に記載のシステム。
【請求項18】
パラメータを計算するための前記モデルを再訓練し、前記再訓練の結果、前記モデルを使用すると、後に形成される前記基準によって、少なくとも、
前記悪意性の程度および前記安全性の限界程度を判定する精度が、パラメータ計算用には訓練されていないモデルを使用する場合より高く、
計算資源の利用率が、パラメータ計算用には訓練されていないモデルを使用する場合より低くなる、
ことが確実となる、請求項
10に記載のシステム。
【請求項19】
悪意あるファイルを検出するための命令を格納する、非一時的なコンピュータ可読
記憶媒体であって、前記命令は、
コンピュータシステム内でのファイルの実行中、前記ファイルを監視することと、
前記ファイルの前記実行中、挙動データに基づいて、特徴ベクトルを形成することであって、
前記特徴ベクトルの特徴は、前記挙動データを特徴づけ、
前記特徴ベクトルは、1組の数の形をとる前記挙動データの畳み込みを表す、ことと、
パラメータを計算するために訓練されたモデルを使用して、前記特徴ベクトルに基づいてパラメータを計算することであって、
前記パラメータは、i)前記ファイルに悪意がある確率を示す悪意性の程度と、ii)前記ファイルが安全であると明確に証明される確率を示す安全性の限界程度とを含み、 連続して計算された程度の集合は、所定の時間法則によって表される、ことと、
前記悪意性の程度および前記安全性の限界程度が所定の基準を満たす場合、前記ファイルに悪意があると判定することであって、
前記基準は、前記悪意性の程度と前記安全性の限界程度との間に確立する相関性に従って前記ファイルを分類するためのルールである、ことと、
を含む命令である、非一時的なコンピュータ可読
記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ウイルス対策技術に関し、特に悪意あるファイルを検出するためのシステムおよび方法に関する。
【背景技術】
【0002】
過去10年間におけるコンピュータ技術の急成長、および様々なコンピュータデバイス(パーソナルコンピュータ、ノート型コンピュータ、タブレット、スマートフォンなど)の広範囲にわたる使用は、多様な領域のアクティビティでのコンピュータデバイスの使用や多数のタスク(インターネットサーフィンから銀行口座振替および電子文書トラフィックまで)に対して強力な刺激剤となっている。コンピュータデバイスの数やコンピュータデバイス上を走るソフトウェアの量が増加するのと並行して、悪意あるプログラムの数もまた急速に増加している。
【0003】
現在、膨大な種類の悪意あるプログラムが存在する。その中には、個人データや機密データ(ログイン情報、パスワード、銀行取引の詳細、電子文書など)をユーザのデバイスから盗み取る、悪意あるプログラムもある。その他、分散型サービス妨害(Distributed Denial of Service:DDoS)など攻撃するために、または、他のコンピュータもしくはコンピュータネットワークに対して総当たりの方法によってパスワードを選別するために、ユーザのデバイスから、いわゆるボットネットを形成する、悪意あるプログラムもある。さらにその他、煩わしい広告を介するユーザへの有料コンテンツ、有料定期購読、電話番号へのSMSの送付などを提供する、悪意あるプログラムもある。
【0004】
ウイルス感染対策として知られる特殊プログラムは、悪意あるプログラムの撲滅に使用され、これには、悪意あるプログラムの検出、感染の予防、および悪意あるプログラムに感染したコンピュータデバイスの作業能力の回復が含まれる。アンチウイルスプログラムは、あらゆる種類の悪意あるプログラムを検出するために、様々な技術を使用する。すなわち、
・静的分析。分析対象プログラムを構成するファイルに含まれるデータに基づく、悪意性についてのプログラムの分析。分析対象プログラムの作業を開始またはエミュレートすることは除く。静的分析中に、下記の分析を用いることができる。
・シグネチャ分析。悪意あるプログラムのシグネチャのデータベースから既知のコード(シグネチャ)と分析対象プログラムのコードの特定セグメントとの対応関係について検索する。
・ホワイトリストおよびブラックリスト。悪意あるプログラムのチェックサムのデータベース(ブラックリスト)、または安全なプログラムのチェックサムのデータベース(ホワイトリスト)において、分析対象プログラム(またはその一部)から計算したチェックサムについて検索する。
・動的分析。分析対象プログラムの作業を実行またはエミュレートする過程で得られたデータに基づく、悪意性についてのプログラムの分析。動的分析中に、下記の分析を用いることができる。
・ヒューリスティック分析。分析対象プログラムの作業のエミュレーション、(API関数の呼び出し、送信されたパラメータ、分析対象プログラムのコードセグメントなどに関するデータを含む)エミュレーションログの作成、および作成されたログのデータと悪意あるプログラムの挙動シグネチャのデータベースからのデータとの間の対応関係についての検索。
・プロアクティブ保護。開始された分析対象プログラムのAPI関数の呼び出しのインターセプト、(API関数の呼び出し、送信されたパラメータ、分析対象プログラムのコードセグメントなどに関するデータを含む)分析対象プログラムの挙動ログの作成、および作成されたログのデータと悪意あるプログラムの呼び出しのデータベースからのデータとの間の対応関係についての検索。
【0005】
静的分析および動的分析は、それぞれ、プラス面およびマイナス面を有する。静的分析においては、分析が行われるコンピュータデバイスのリソースに対する要求がより少なく、分析対象プログラムの実行またはエミュレーションを必要としないため、統計分析速度は速いが、有効性は低い。すなわち、静的分析では、悪意あるプログラムの検出率がより低く、フォルスアラーム(すなわち、アンチウイルスプログラムによって分析されたファイルが、安全なものであるにもかかわらず、悪意あるものとして判定されてしまう)の可能性はより高い。動的分析は、分析対象プログラムの作業の実行またはエミュレーション中に得られたデータを使用するため、分析速度は遅く、分析が行われるコンピュータデバイスのリソースに対する要求がより大きいが、有効性は高い。最近のアンチウイルスプログラムは、静的分析および動的分析の両方の要素を含む包括的な分析を用いる。
【0006】
情報セキュリティにおける最近の基準では、悪意あるプログラム(特に新しいプログラム)に対する動作反応が要求されているため、悪意あるプログラムの自動検出手段が主に注目されている。この自動検出手段を有効に動作させるために、人工知能の要素や、悪意あるプログラムを検出するためのモデル(すなわち、悪意あるファイルを表す1組の入力データに基づいてファイルの悪意性について判定をするためのルール)による様々な機械学習法が使用されることが多く、これによって、既知の悪意あるプログラムまたは既知の悪意ある挙動を有する悪意あるプログラムだけでなく、未知のまたはほとんど研究されていない悪意ある挙動を有する、新しい悪意あるプログラムを有効に検出することが可能になるとともに、新しい悪意あるプログラムを検出するための動作上の適合(学習)が可能になる。
【発明の概要】
【発明が解決しようとする課題】
【0007】
既知の技術は、既知の悪意あるファイルの特徴に類似する特定の属性(すなわち、グラフィックインターフェースの存在、データの暗号化、コンピュータネットワークを介したデータ送信などの、特定グループのファイルからファイルの特定の特徴を表すデータ)を有する悪意あるファイルを検出するのに対処するが、これらの技術は、(類似の挙動であっても)既知の悪意あるファイルの特徴とは異なる特徴を有する悪意あるファイルを検出することはできない。さらに、上述した技術は、モデルを試験および再訓練する、ならびに(上記試験の結果に依存して)特徴を形成および改良するなど、モデルを用いて機械学習する態様を開示していない。
【0008】
本開示によれば、悪意あるファイルを検出するという課題を解決することができる。
【課題を解決するための手段】
【0009】
本開示は、ファイルをアンチウイルススキャニングするように設計されている。
【0010】
本開示の多くの例示的な技術結果のうちの1つは、悪意性に対するファイルスキャニングの質を高めることを含む。
【0011】
さらに、本開示の別の例示的な技術結果は、悪意性に対するファイルスキャニングを実施するのに使用されるコンピュータリソースを減らすことを含む。
【0012】
上記の結果は、悪意あるファイルを検出するための方法、システム、およびコンピュータプログラム製品を使用することで達成される。
【0013】
例示的な方法は、コンピュータシステム内でのファイルの実行中、上記ファイルを監視する工程と、上記ファイルの実行中、挙動データに基づいて、特徴ベクトルを形成する工程であって、上記特徴ベクトルの特徴は上記挙動データを特徴づけ、上記特徴ベクトルは1組の数の形をとる上記挙動データの畳み込みを表す、工程と、パラメータを計算するために訓練されたモデルを使用して、上記特徴ベクトルに基づいてパラメータを計算する工程であって、上記パラメータは、i)上記ファイルに悪意がある確率を示す悪意性の程度と、ii)上記ファイルに悪意があると明確に証明される確率を示す安全性の限界程度とを含み、連続して計算された程度の集合は、所定の時間法則によって表される、工程と、上記悪意性の程度および上記安全性の限界程度が所定の基準に達する場合、上記ファイルに悪意があると判定する工程であって、上記基準は、上記悪意性の程度と上記安全性の限界程度との間に確立する相関性に従って上記ファイルを分類するためのルールである、工程と、を含む。
【0014】
別の態様において、パラメータを計算するための上記モデルは、少なくとも1つの安全なファイルと1つの悪意あるファイルに対して行われる機械学習法によって訓練される。
【0015】
別の態様において、上記機械学習法は、決定木に基づいた勾配ブースティング、決定木、k近傍法、およびサポートベクトル法のうちの1つである。
【0016】
別の態様において、上記挙動データは、少なくとも、ファイルによって実行されるコマンド、上記コマンドに送信される属性、および戻り値か、実行対象の上記ファイルによって変更されるランダムアクセスメモリ(Random Access Memory:RAM)領域に関するデータか、または上記ファイルの静的パラメータである。
【0017】
別の態様において、上記方法は、上記悪意性の程度に基づいて上記安全性の限界程度を計算する工程をさらに含み、上記安全性の限界程度は、上記ファイルの起動時に、ファイルの静的パラメータの分析に基づいて計算する。
【0018】
別の態様において、パラメータを計算するために訓練された上記モデルは、上記挙動データに依存する、上記ファイルの上記悪意性の程度および上記ファイルの上記安全性の限界程度を計算するための1組のルールである。
【0019】
別の態様において、上記時間法則は、本質的に単調である。
【0020】
別の態様において、上記悪意性の程度と上記安全性の限界程度の間の相関性は、少なくとも、上記悪意性の程度と悪意性の境界条件の間の隔たりの所定閾値からの差か、上記悪意性の程度と上記境界条件の間の所与の時間間隔に結びつけられる上記領域の所定閾値からの差か、または、時間関数として上記悪意性の程度および上記悪意性の境界条件における変化を表す曲線の相互増加率の所定値からの差である。
【0021】
別の態様において、パラメータを計算するための上記モデルを、計算した上記悪意性の程度および上記安全性の限界程度の分析に基づいて、さらに再訓練し、上記再訓練の結果、上記悪意性の程度および上記安全性の限界程度を表す上記時間法則における変化は、上記法則に基づいて得られた上記値の間の相関性が最大に向かう傾向があることを意味する。
【0022】
別の態様において、パラメータを計算するための上記モデルを再訓練し、その結果、上記モデルを使用すると、後に形成される上記基準によって、少なくとも、上記悪意性の程度および上記安全性の限界程度を判定する精度が、パラメータの計算用には訓練されていないモデルを使用する場合より高い、または、計算資源の利用率が、パラメータの計算用には訓練されていないモデルを使用する場合より低くなる、ことが確実となる。
【0023】
別の態様において、悪意あるファイルを検出するためのシステムを提供する。上記システムは、ハードウェアプロセッサを備え、上記ハードウェアプロセッサは、コンピュータシステム内でのファイルの実行中、上記ファイルを監視し、上記ファイルの上記実行中、挙動データに基づいて、特徴ベクトルを形成し、パラメータを計算するために訓練されたモデルを使用して、上記特徴ベクトルに基づいてパラメータを計算し、上記悪意性の程度および上記安全性の限界程度が所定の基準に達する場合、上記ファイルに悪意があると判定する。上記特徴ベクトルの特徴は上記挙動データを特徴づけ、上記特徴ベクトルは1組の数の形をとる上記挙動データの畳み込みを表す。上記パラメータは、i)上記ファイルに悪意がある確率を示す悪意性の程度と、ii)上記ファイルに悪意があると明確に証明される確率を示す安全性の限界程度とを含み、連続して計算された程度の集合は、所定の時間法則によって表される。上記基準は、上記悪意性の程度と上記安全性の限界程度との間に確立する相関性に従って上記ファイルを分類するためのルールである。
【0024】
さらに別の態様において、本開示における上記方法および上記システムを実行するための命令を含む、非一時的なコンピュータ可読媒体を提供してもよい。
【0025】
例示的な態様の上記簡略な概要は、本開示の基本的な理解を促進する。この概要は、全ての企図された態様の広範な概観ではなく、全ての態様の重要な要素または必須の要素を特定することを意図するものでもなく、本開示の任意または全ての態様の範囲を説明するものでもない。上述した目的を達成するために、本開示の1つ以上の態様は、特許請求の範囲において記載し、かつ、特に指摘する特徴を含む。
【図面の簡単な説明】
【0026】
添付の図面は、本明細書に組み込まれ、本明細書の一部を構成し、本開示の1つ以上の例示的な態様を示し、詳細な説明とともに、上記態様の原理および実施形態を説明する役割を果たす。
【0027】
【
図1】
図1は、本開示の例示的な態様に係る、悪意あるファイルを検出するためのモデルによる機械学習のシステムの構成図である。
【
図2】
図2は、本開示の例示的な態様に係る、悪意あるファイルを検出するためのモデルによる機械学習法の構成図である。
【
図3】
図3は、本開示の例示的な態様に係る、挙動パターンの数の関数としての、悪意性の程度の変化の動態例を示す。
【
図4】
図4は、本開示の例示的な態様に係る、挙動パターンの要素間の関係例を示す図である。
【
図5】
図5は、本開示の例示的な態様に係る、悪意あるファイルを検出するために訓練されたモデルを使用して、悪意あるファイルを検出するためのシステムの構成図である。
【
図6】
図6は、本開示の例示的な態様に係る、悪意あるファイルを検出するために訓練されたモデルを使用して、悪意あるファイルを検出するための方法の構成図である。
【
図7】
図7は、本開示の例示的な態様に係る、悪意あるファイルを検出するための方法の構成図である。
【
図8】
図8は、本開示の例示的な態様に係る、悪意あるファイルを検出するための方法の構成図である。
【
図9】
図9は、本開示の例示的な態様に係る、挙動パターンの数の関数としての、悪意性の程度と安全性の限界程度における変化の動態例を示す。
【
図10】
図10は、本開示の例示的な態様に係る、汎用コンピュータシステム、パーソナルコンピュータ、またはサーバの例を示す。
【発明を実施するための形態】
【0028】
ファイルのアンチウイルススキャニングのためのシステム、方法、およびコンピュータプログラム製品に関連して、例示的な態様を本開示において説明する。当業者であれば、以下の説明は例示的なものにすぎず、本発明を限定することを意図するものではないことを理解するであろう。他の態様は、本開示の恩恵を受ける当業者には容易に示唆されるであろう。添付の図面に例示されている例示的な態様の実装を詳細に説明する。同じ参照符号は、可能な限り図面全体および以下の記載にわたって、同じものを表すために使用される。
【0029】
以下の定義および概念は、本開示の様々な態様の説明全体にわたって用いられる。
【0030】
悪意あるファイル。すなわち、その実行が、コンピュータ情報の不正な破壊、ブロッキング、変更、複製、またはコンピュータ情報を保護する方法の無効化に帰着することができることが知られているファイル。
【0031】
実行対象ファイルの悪意ある挙動。すなわち、実行対象ファイルの実行中に行われることがあるアクション群であって、コンピュータ情報の不正な破壊、ブロッキング、変更、複製、またはコンピュータ情報を保護する方法の無効化に帰着することができることが知られているアクション群。
【0032】
実行対象ファイルの悪意あるアクティビティ。すなわち、実行対象ファイルの悪意ある挙動に従って、上記ファイルによって行われるアクション群。
【0033】
平均的なユーザのコンピュータデバイス。すなわち、事前に選択されるユーザ群のコンピュータデバイスの平均特性を有する仮説上(理論上)のコンピュータデバイスであって、平均的なユーザのコンピュータデバイス上におけるアプリケーションと同じアプリケーションが実行されるコンピュータデバイス。
【0034】
コンピュータデバイスによって実行可能なコマンド。すなわち、1組の機械命令またはスクリプトの命令であって、コマンドパラメータまたは上記コマンドを表すパラメータとして知られる、上記命令のパラメータに基づいて、コンピュータデバイスによって実行可能な命令。
【0035】
語彙分析(トークン化)。すなわち、出力識別列(以下、トークンと称する)を形成するために、入力文字列を、認識されたグループ(以下、語彙素と称する)にする分析的な構文解析のプロセス。
【0036】
トークン。すなわち、語彙分析のプロセスにおいて語彙素から形成された識別列。
【0037】
図1は、悪意あるファイルを検出するためのモデルによる機械学習のシステムの構成図である。
【0038】
機械学習のためのシステムの構成図は、訓練選択肢準備モジュール111、挙動ログ形成モジュール112、挙動パターン形成モジュール121、畳み込み関数形成モジュール122、検出モデル作成モジュール131、検出モデル機械学習モジュール132、悪意性程度計算モジュール142、および資源管理モジュール143からなる。
【0039】
システムの一態様において、検出用モデルによって機械学習する上記システムは、クライアントサーバアーキテクチャを有する。上記システムにおいては、訓練選択肢準備モジュール111、挙動ログ形成モジュール112、挙動パターン形成モジュール121、畳み込み関数形成モジュール122、検出モデル作成モジュール131、および検出モデル機械学習モジュール132は、サーバ側で作動し、挙動パターン形成モジュール121、悪意性程度計算モジュール142、および資源管理モジュール143は、クライアント側で作動する。
【0040】
たとえば、クライアントは、パーソナルコンピュータ、ノートブック型コンピュータ、スマートフォンなどのユーザのコンピュータデバイスであってもよく、サーバは、ファイルの予備収集およびアンチウイルス分析、アンチウイルスレコードの作成などを実行するサーバの分散型システムのような、アンチウイルス会社のコンピュータデバイスであってもよい。その場合、悪意あるファイルを検出するためのモデルによる機械学習のシステムを使用して、クライアント側で悪意あるファイルを検出してもよく、それによって、クライアントのウイルスからの保護の有効性が向上する。
【0041】
さらに別の例において、クライアントおよびサーバの両方が、アンチウイルス会社のコンピュータデバイスのみであってもよい。その場合、悪意あるファイルを検出するためのモデルによる機械学習のシステムを使用して、ファイルの自動アンチウイルス分析およびアンチウイルスレコードの作成を行い、それによって、アンチウイルス会社の作業の有効性が向上する。
【0042】
訓練選択肢準備モジュール111は、以下のように設計される。
・ファイルの訓練の選択肢を形成する所定のルールに従って、ファイルのデータベースから少なくとも1つのファイルを選択し、その後、検出モデル機械学習モジュール132は、選択したファイルの分析に基づいて、検出モデルの訓練を実施する。
・挙動ログ形成モジュール112に選択したファイルを送信する。
【0043】
システムの一態様において、少なくとも1つの安全なファイル、および1つの悪意あるファイルをファイルのデータベースに保存する。
【0044】
たとえば、ファイルのデータベースにおいて、安全なファイルは、Windowsオペレーティングシステムのファイルであってもよく、悪意あるファイルは、バックドアのファイル、すなわち、データへの不正なアクセス、ならびにオペレーティングシステムおよび全体としてのコンピュータの遠隔操作を実行するアプリケーションであってもよい。さらに、機械学習法を使用して、上述したファイル上で訓練された、悪意あるファイルを検出するためのモデルは、上述したバックドアの機能性に類似する機能性を有する悪意あるファイルを、高い精度で検出することができる(上述した検出用モデルの訓練に使用されるファイルが多ければ多いほど、精度は高くなる)。
【0045】
システムのさらに別の一態様において、ファイルのデータベースに、さらに、少なくとも、下記のファイルを追加して保存する。
・疑わしいファイル(リスクウェア)。すなわち、悪意性はないが、悪意あるアクションを実行することができるファイル。
・未知のファイル。すなわち、悪意性の判定がなされておらず、不明なままであるファイル(すなわち、安全ではない、悪意性がある、疑わしいなどのファイル)。
【0046】
たとえば、ファイルのデータベースにおいて、疑わしいファイルが、(RAdminなどの)遠隔管理、アーカイビング、(WinZipなどの)データの暗号化などのためのアプリケーションのファイルであってもよい。
【0047】
システムのさらに別の態様においては、ファイルのデータベースには、少なくとも、下記のファイルが保存されている。
・アンチウイルスウェブクローラによって収集されたファイル。
・ユーザによって送信されたファイル。
【0048】
さらに、上記ファイルは、その後、上記ファイルの悪意性についての判定を行うために、ファイルの自動分析方法を用いることを含む、アンチウイルスの専門家によって分析される。
【0049】
たとえば、ファイルのデータベースには、ファイルの悪意性を検査するために、ユーザがユーザ自身のコンピュータデバイスからアンチウイルス会社へ送信したファイルが保存されていることもある。その場合、送信されたファイルは、安全であっても、悪意があってもよく、上記安全なファイルおよび上記悪意あるファイルの数の間の分布は、上記ユーザのコンピュータデバイスに在る全ての安全なファイルおよび悪意あるファイルの数の分布に近い(すなわち、上記悪意あるファイルの数に対する上記安全なファイルの数の比は、上記ユーザのコンピュータデバイスに在る全ての悪意あるファイルの数に対する全ての安全なファイルの数の比と指定された閾値未満の量だけ異なる)。
【数1】
【0050】
ユーザが送信したファイル(すなわち、主観的に疑わしいとするファイル)とは異なり、疑わしいファイルおよび悪意あるファイルを検索するように設計されているアンチウイルスウェブクローラによって収集されたファイルには、大抵の場合、悪意があることが判明する。
【0051】
システムのさらに別の態様において、以下の条件の少なくとも1つが、ファイルのデータベースからファイルを選択するための基準として用いられる。
・ファイルのデータベースから選択された安全なファイルと悪意あるファイルの分布は、平均的なユーザのコンピュータデバイス上に在る安全なファイルと悪意あるファイルの分布に対応する。
・ファイルのデータベースから選択された安全なファイルと悪意あるファイルの分布は、アンチウイルスウェブクローラを用いて収集した安全なファイルと悪意あるファイルの分布に対応する。
・ファイルのデータベースから選択されたファイルのパラメータは、平均的ユーザのコンピュータデバイス上に在るファイルのパラメータに対応する。
・選択されたファイルの数は、所定の値と一致するが、ファイル自体はランダムに選択される。
【0052】
たとえば、ファイルのデータベースは、100,000個のファイルを含み、そのうちの40%が安全なファイルであり、60%が悪意あるファイルであるとする。ファイルのデータベースから、15,000個のファイル(ファイルのデータベースに保存されているファイルの総数の15%)を選択すると、その結果、選択された安全なファイルと悪意あるファイルの分布は、平均的なユーザのコンピュータデバイス上に在る安全なファイルと悪意あるファイルの間の分布に対応し、95対5となる。したがって、14,250個の安全なファイル(安全なファイルの総数の35.63%)および750個の悪意あるファイル(悪意あるファイルの総数の1.25%)がファイルのデータベースからランダムに選ばれる。
【0053】
さらに別の例において、ファイルのデータベースは、1,250,000個のファイルを含み、そのうちの95%が安全なファイルであり、5%が悪意あるファイルであるとする。すなわち、ファイルのデータベースに保存されている安全なファイルと悪意あるファイルの分布は、平均的なユーザのコンピュータデバイス上にある安全なファイルと悪意あるファイルの分布に対応する。これらのファイルのうち、5,000個のファイルがランダムに選ばれ、4,750個までのファイルが安全なファイルであり、250個までのファイルが悪意あるファイルであることが高い確率で判明する。
【0054】
システムのさらに別の態様においては、ファイルのパラメータは、少なくとも、下記のとおりである。
・ファイルが安全であるか、悪意あるものであるか、潜在的に危険なものであるか、または、ファイルを実行したときのコンピュータシステムの挙動が判定されていないものかなどを特徴づける、ファイルの悪意性の程度。
・ファイルの実行中にコンピュータデバイスによって実行されるコマンドの数。
・ファイルのサイズ。
・ファイルを利用するアプリケーション。
【0055】
たとえば、アプリケーション「Adobe Flash」によって実行可能であり、かつ、サイズが5kbを超えない、「ActionScript」言語のスクリプトであるファイルのデータベースから、悪意あるファイルが選択される。
【0056】
システムのさらに別の態様においては、訓練選択肢準備モジュール111は、さらに下記のように設計される。
・ファイルの試験的な選択肢を形成する所定のルールに従って、ファイルのデータベースから少なくとも1つ以上のファイルを選択し、その後、検出モデル機械学習モジュール132が、選択されたファイルの分析に基づいて、訓練された検出モデルの検証を実行する。
・選択されたファイルを挙動ログ形成モジュール112へ送信する。
【0057】
たとえば、ファイルのデータベースが75,000個のファイルを含み、そのうちの20%が安全なファイルであり、80%が悪意あるファイルであるとする。まず、ファイルのデータベースから12,500個のファイルが選択され、このうち、30%が安全なファイルであり、70%が悪意あるファイルである。その後、検出モデル機械学習モジュール132は、選択されたファイルの分析に基づいて検出モデルの訓練を実行する。その後、残りの62,500個のファイルから2,500個のファイルが選択され、このうち、60%が安全なファイルであり、40%が悪意あるファイルである。その後、検出モデル機械学習モジュール132は、選択されたファイルの分析に基づいて訓練された検出モデルの検査を実行する。上記手法によって構築されたデータを、相互検証データセットと称する。
【0058】
挙動ログ形成モジュール112は、下記のように設計される。
・少なくとも、下記の最中に、少なくとも1つの実行可能なコマンドをインターセプトする。
・受信したファイルの実行。
・受信したファイルの実行のエミュレーション。この場合、ファイルの実行のエミュレーションは、上記ファイルを開くこと(たとえば、インタープリタによってスクリプトを開くこと)を含む。
・インターセプトされた各コマンドに対して、上記コマンドを表す少なくとも1つのパラメータを決定する。
・インターセプトされたコマンドおよび上記のように決定されたパラメータに基づいて受信したファイルの挙動ログを形成する。その場合、上記挙動ログは、ファイルからインターセプトされたコマンド(以後、コマンドと称する)の全体を構成し、各コマンドは、上記のように決定された、上記コマンドを表す少なくとも1つのパラメータ(以後、パラメータと称する)に対応する。
【0059】
たとえば、パスワードを収集し、コンピュータネットワークを介して上記パスワードを送信する悪意あるファイルを実行する間にインターセプトされたコマンド、および、上記コマンドに対して計算されたパラメータは、下記のようなものであってもよい。
CreateFile, ‘c:\windows\system32\data.pass’
ReadFile, 0x14ea25f7, 0xf000
connect, http://stealpass.com
send, 0x14ea25f7, 0xf000
【0060】
システムの一態様において、ファイルからのコマンドのインターセプトは、少なくとも、
・特殊なドライバ、
・デバッガ、
・ハイパーバイザ、
を使用して実行する。
【0061】
たとえば、ファイル実行中のコマンドのインターセプト、および上記コマンドのパラメータの決定は、WinAPI関数のエントリーポイントを継いでインターセプトを利用するドライバを用いて行われる。
【0062】
さらに別の例において、ファイルの作動のエミュレーション中におけるコマンドのインターセプトは、上記エミュレーションを実行し、エミュレートされる必要があるコマンドのパラメータを決定するエミュレータ手段によって直接行われる。
【0063】
さらに別の例において、仮想機械上でのファイルの実行中におけるコマンドのインターセプトは、エミュレートされる必要があるコマンドのパラメータを決定するハイパーバイザ手段によって行われる。
【0064】
システムのさらに別の態様において、ファイルからのインターセプトされたコマンドは、少なくとも
・API関数、
・1組の所定のアクションを表す機械命令の組(マクロコマンド)、
である。
【0065】
たとえば、悪意あるプログラムは、特定のファイルについて検索を実行し、上記ファイルの属性を変更することが多く、それに対して、例えば、下記のコマンドシーケンスを実行する。
FindFirstFile, ‘c:\windows\system32\*.pass’, 0x40afb86a
SetFileAttributes, ‘c:\windows\system32\data.pass’
FindNextFile, 0x40afb86a
CloseHandle, 0x40afb86a
【0066】
また、上記コマンドシーケンスは、下記の単一コマンドのみによって表されてもよい。
_change_attributes, ‘c:\windows\system32\*.pass’
【0067】
システムのさらに別の態様においては、各コマンドを、コマンドの一意の識別子と一致させる。
【0068】
たとえば、全てのWinAPI関数を、0x0000~0x8000の範囲の数と一致させてもよい、その場合、各WinAPI関数は、その一意の数に対応する(たとえば、ReadFile→0x00f0, ReadFileEx→0x00f1, connect→0x03A2)。
【0069】
システムのさらに別の態様においては、類似のアクションを表すいくつかのコマンドを、単一の識別子と一致させる。
【0070】
たとえば、ファイルからのデータの読み出しを表す、ReadFileEx、ifstream、getline、getcharなどの全てのコマンドを、識別子_read_data_file (0x70F0)と一致させる。
【0071】
挙動パターン形成モジュール121は、下記のように設計される。
・挙動ログから選択されたコマンドおよびパラメータに基づいて、少なくとも1つの挙動パターンを形成する。その場合、挙動ログは、ファイルからの実行可能なコマンド(以後、コマンドと称する)の全体を構成し、各コマンドは、上記コマンドを表す少なくとも1つのパラメータ(以後、パラメータと称する)に対応し、挙動パターンは、少なくとも1つのコマンドとパラメータからなる組であり、上記パラメータは、上記1組のコマンド全て(以後、挙動パターンの要素と称する)を表す。
・上述したようにして形成された挙動パターンを畳み込み関数形成モジュール122に送信する。
【0072】
たとえば、挙動ログから、以下のコマンドc
iおよびパラメータp
iを選択する。
【数2】
【0073】
選択されたコマンドおよびパラメータに基づいて、挙動パターンを形成する。各挙動パターンは、1つのコマンドおよび上記コマンドを表す1つのパラメータを含む。
【数3】
【0074】
次に、上述したようにして形成されたパターンに基づいて、挙動パターンをさらに形成する。各挙動パターンは、1つのパラメータおよび上記パラメータによって表すことができる全てのコマンドを含む。
【数4】
【0075】
次に、上記のようにして形成されたパターンに基づいて、挙動パターンをさらに形成する。各挙動パターンは、いくつかのパラメータおよび上記パラメータによって同時に表すことができる全てのコマンドを含む。
【数5】
【0076】
システムの一態様においては、コマンドおよびパラメータは、ルールに基づいて挙動ログから選択される。上記ルールによって、少なくとも、下記のコマンドおよびパラメータが選択される。
・連続したi番目毎のコマンドおよび上記コマンドを表すパラメータ。インクリメントiは所定の増分である。
・前に選択されたコマンドから所定の時間の経過後に(たとえば、10秒ごとに)実行され、自身のパラメータを表すコマンド。
・ファイルの実行開始から所定の時間間隔で実行されるコマンド、および上記コマンドを表すパラメータ。
・所定のリストからのコマンド、および上記コマンドを表すパラメータ。
・所定のリストからのパラメータ、および上記パラメータによって表すことができるコマンド。
・コマンドパラメータの数が所定の閾値よりも多い場合における、コマンドの、最初またはランダムなk個のパラメータ。
【0077】
たとえば、挙動ログから、(CreateFile、ReadFile、WriteFile、DeleteFile、GetFileAttributeなどの)ハードディスクとともに動作するための全てのコマンドを選択し、選択されたコマンドを表す全てのパラメータを選択する。
【0078】
さらに別の例において、挙動ログから1,000番目毎にコマンドを選択し、選択されたコマンドを表す全てのパラメータを選択する。
【0079】
システムの一態様において、挙動ログは、少なくとも2つのファイルから事前に形成され、上記ファイルのうち一方は安全なファイルであり、他方は悪意あるファイルである。
【0080】
システムのさらに別の態様において、挙動パターンの各要素を、上記挙動パターンの要素の種類などの特徴と一致させる。挙動パターンの要素(コマンドまたはパラメータ)の種類は、少なくとも、以下の通りである。
・挙動パターンの要素を数として表現することができる場合には、「数の範囲」である。
【0081】
たとえば、connectコマンドのパラメータporthtml=80を構成する挙動パターンの要素に対して、挙動パターンの上記要素の種類は、「0×0000~0×FFFFの範囲の数」であってもよい。
・挙動パターンの要素をストリングの形で表現することができる場合には、「ストリング」である。
【0082】
たとえば、connectコマンドを構成する挙動パターンの要素に対して、挙動パターンの上記要素の種類は、「32文字のサイズより少ないストリング」であってもよい。
・挙動パターンの要素を所定のデータ構造によって表すことができるデータの形で表現することができる場合には、挙動パターンの上記要素の種類は、「データ構造」であってもよい。
【0083】
たとえば、find_recordコマンドのパラメータ
【数6】
を構成する挙動パターンの要素に対して、挙動パターンの上記要素の種類は、「データ構造MD5」であってもよい。
【0084】
システムのさらに別の態様において、挙動パターンは、上記挙動パターンの要素として、少なくとも、
・語彙素の形成のための所定のルール、
・事前に訓練された再帰型ニューラルネットワーク、
を用いた、挙動パターンの上記要素の語彙分析に基づいて形成されたトークンを、さらに含む。
【0085】
たとえば、下記のパラメータの語彙分析を用いて、
‘c:\windows\system32\data.pass’
語彙素を形成するためのルール、すなわち、
・ストリングがファイルへのパスを含む場合には、上記ファイルが在るディスクを判定する、
・ストリングがファイルへのパスを含む場合には、上記ファイルが在るフォルダを判定する、
・ストリングがファイルへのパスを含む場合には、ファイルの拡張子を判定する、
ルールに基づき、
上記語彙素は、
・ファイルへのパス、
・ファイルが在るフォルダ、
・ファイル名、
・ファイルの拡張子
であり、
下記のトークンを形成することができる。
【0086】
“paths to the file” →
‘c:\’,
“folders in which the files are located” →
‘windows’,
‘system32’,
‘windows\system32’,
“extensions of the files” →
‘.pass’
【0087】
さらに別の例において、下記のパラメータの語彙分析を用いて、
‘81.19.82.8’,‘81.19.72.38’,‘81.19.14.32’
語彙素を形成するための下記のルールに基づいて、
・パラメータがIPアドレスを構成する場合には、上記IPアドレスを表すビットマスク(または、メタ文字によって表現されるビットマスクのアナログ)を判定し(すなわち、全ての上記IPに対して等式
【数7】
が真であるようなビットマスクM)、
下記のトークンを構築することができる。
‘81.19.*.*’.
【0088】
さらに別の例において、数を含む全ての利用可能なパラメータから、数のトークンを、下記の所定範囲内で形成し、
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}
【0089】
システムのさらに別の態様において、トークンは、ストリングからなる挙動パターンの要素から形成される。
【0090】
たとえば、挙動パターンは、ディスク、ディレクトリ、ファイル、ファイル拡張子などの名前を含むファイルへのパスである。この場合、トークンは、ディスクの名前およびファイル拡張子であってもよい。
C:\Windows\System32\drivers\acpi.sys
→
C:\
*.sys
【0091】
畳み込み関数形成モジュール122は、下記のように設計される。
・得られた挙動パターンについて実行された畳み込み関数の結果の逆畳み込み関数の結果が、指定値よりも大きい得られた挙動パターンと類似性を有することになるように、挙動パターンから畳み込み関数を形成する。すなわち、
【数8】
式中、
r
iは、挙動パターンであり、
gは、畳み込み関数であり、
g
-1は、逆畳み込み関数である。
・上記のようにして形成された畳み込み関数を検出モデル機械学習モジュール132に送信する。
【0092】
システムの一態様において、畳み込み関数形成モジュール122は、さらに、以下のように設計される。
・得られた挙動パターンに基づいて挙動パターンの特徴ベクトルを計算する。その場合、上記挙動パターンの特徴ベクトルは、挙動パターンの要素のハッシュ合計として表現されてもよい。
・挙動パターンの特徴ベクトルから畳み込み関数を形成する。その場合、上記畳み込み関数は、計算された特徴ベクトルと、計算された特徴ベクトルのハッシュ関数の結果の逆ハッシュ関数の結果との間の類似性の程度が所定の値よりも大きくなるように、ハッシュ関数を構成する。
【0093】
システムのさらに別の態様において、畳み込み関数は、計量学習の方法によって形成される。すなわち、所定の閾値より類似性の程度が大きい挙動パターンに対して、上記畳み込み関数を用いて得られた畳み込み間の隔たりが所定の閾値未満になるようにし、一方で、所定の閾値より類似性の程度が小さい挙動パターンに対して、上記隔たりは上記所定の閾値より大きくなるようにする。
【0094】
たとえば、挙動パターンの特徴ベクトルを、以下のように計算してもよい。
・まず、100,000個の要素からなる、空のビットベクトルを作成する(上記ベクトルの各要素に対して、1ビットの情報が予約される)。
・挙動パターンrからの1,000個の要素が、コマンドc
iについてのデータを記憶するために確保され、残りの99,000個の要素が、挙動パターンrのパラメータc
iのために確保される。その場合、50,000個の要素(要素1001~要素51000)が、ストリングパラメータ用に確保され、25,000個の要素(要素51001~要素76000)が、数のパラメータ用に確保される。
・挙動パターンrの各コマンドc
iを、0~999の特定の数x
iと一致させるとともに、対応するビットを、下記のように作成されたベクトルに設定する。
【数9】
・挙動パターンrの各パラメータp
iに対して、ハッシュ合計を、下記の式によって計算する。
・ストリングに対しては、
【数10】
・数に対しては、
【数11】
・その他に対しては、
【数12】
計算されたハッシュ合計に依存して、対応するビットを下記のようにして作成したベクトルに設定する。
【数13】
【0095】
上述したように設定された要素を備えた上記ビットベクトルは、挙動パターンrの特徴ベクトルを構成する。
【0096】
システムのさらに別の態様において、挙動パターンの特徴ベクトルは、以下の式によって計算される。
【数14】
式中、
bは、計算の位取り記数法の底であり(たとえば、2進法のベクトルについては、b=2であり、ストリング、すなわち、文字群を表すベクトルについては、b=8である)、
r
iは、挙動パターンのi番目の要素であり、
hは、ハッシュ関数であって、
【数15】
である。
【0097】
たとえば、挙動パターンの特徴ベクトルを、以下のように計算してもよい。
・まず、(前の例とは異なる)さらに別の空のビットベクトルを作成する。上記空のビットベクトルは1,000個の要素からなる(1ビットの情報はベクトルの各要素のために予約される)。
・以下の式によって、挙動パターンrの各パターン要素r
iに対してハッシュ合計を計算し、
【数16】
計算されたハッシュ合計に依存して、下記の式を満たすように作成したベクトルに対応するビットを設定する。
【数17】
システムのさらに別の態様においては、挙動パターンの特徴ベクトルは、ブルームフィルタを構成する。
【0098】
たとえば、挙動パターンの特徴ベクトルは、以下のように計算してもよい。
・まず、(前の例とは異なる)さらに別の空のベクトルを作成する。上記空のベクトルは、100,000個の要素からなる。
・下記の式により、1組のハッシュ関数{h
j}を用いて、挙動パターンrの各パターン要素r
iに対して少なくとも2つのハッシュ合計を計算する。
【数18】
式中、
【数19】
計算されたハッシュ合計に依存して、下記の式を満たすように作成したベクトルに対応する要素を設定する。
【数20】
【0099】
システムのさらに別の態様において、挙動パターンの特徴ベクトルの構築された畳み込み関数の結果は、挙動パターンの上記特徴ベクトルより小さいサイズとなる。
【0100】
たとえば、特徴ベクトルは、100,000個の要素を含むビットベクトルを構成し、したがって、12,500バイトのサイズを有する。一方、上記特徴ベクトルの畳み込み関数の結果は、8つのMD5のハッシュ合計からなる1組を構成し、したがって、256バイトのサイズ、すなわち、特徴ベクトルの2%以下のサイズを有する。
【0101】
システムのさらに別の態様において、特徴ベクトルと計算された特徴ベクトルの上記ハッシュ関数の結果の逆ハッシュ関数の結果との類似性の程度は、0~1の範囲の数値で表され、以下の式によって計算される。
【数21】
式中、
【数22】
は、h(r
i)とg
iとの合同を表し、
{h(r
i)}は、挙動パターンの要素のハッシュ関数の結果の組を表し、
{g
i}は、挙動パターンの要素のハッシュ関数の結果の逆ハッシュ関数の結果の組を表し、
r
iは、挙動パターンのi番目の要素を表し、
hは、ハッシュ関数を表し、
wは、類似性の程度を表す。
たとえば、計算された特徴ベクトルは、下記のビットベクトルを構成し、
101011100110010010110111011111101000100011001001001001110101101101010001100110110100100010000001011101110011011011
この特徴ベクトルの畳み込み関数の結果は下記の通りであり、
1010011110101110101
上記のようにして得られた結果の逆畳み込み関数の結果は、下記の通りである。
【数23】
(上記結果において、太字および下線は、特徴ベクトルとは異なる要素を示す)。よって、特徴ベクトルと逆畳み込み関数の結果との類似性は、0.92である。
【0102】
システムのさらに別の態様において、パラメータとして挙動パターンの要素を使用する上記ハッシュ関数は、挙動パターンの要素の種類に依存する。
【数24】
【0103】
たとえば、ファイルへのパスを含むストリングを構成する挙動パターンからパラメータのハッシュ合計を計算するために、ハッシュ関数CRC32を用い、他のいずれのストリングに対しては、ハフマンアルゴリズムを、データセットに対しては、ハッシュ関数MD5を用いる。
【0104】
システムのさらに別の態様において、挙動パターンの特徴ベクトルの畳み込み関数を、オートエンコーダによって形成する。この場合、入力データは、挙動パターンの上記特徴ベクトルの要素であり、出力データは、所定の閾値よりも大きい入力データに対する類似性の係数を有するデータである。
【0105】
検出モデル作成モジュール131は、下記のように設計される。
・悪意あるファイルを検出するためのモデルを作成する。上記作成工程は、少なくとも、
・検出モデルによる機械学習法の選択と、
・訓練モデルのパラメータの初期化と、
を含み、検出モデルによる機械学習の開始に先立って初期化された訓練モデルのパラメータが、ハイパーパラメータとして知られており、訓練選択肢準備モジュール111によって選択されたファイルのパラメータに依存する。
・上述したように作成された訓練モデルを検出モデル機械学習モジュール132に送信する。
【0106】
たとえば、検出モデルによる機械学習法を選択する際、まず、検出モデルとして、人工ニューラルネットまたはランダムフォレストのいずれを使用するかの決定がなされる。次に、次に、ランダムフォレストが選択された場合には、ランダムフォレストのノードに対する分離基準が選択されるか、または、人工ニューラルネットが選択された場合には、人工のニューラルネットのパラメータの数値を最適化する方法が選択される。さらに、機械学習のための特定の方法の選択に関する決定は、所定の種類(すなわち、データ構造、挙動パターンの要素の数、悪意あるファイルについて検索が行われるコンピュータデバイスの性能、コンピュータデバイスの利用可能なリソースなど)の入力データ(挙動パターン)を用いて悪意あるファイルの検出における上記方法の有効性(すなわち、悪意あるファイルを検出する際に生じる第1および第2の種類のエラーの数)に基づいてなされる。
さらに別の例において、検出モデルによる機械学習のための方法は、少なくとも、
・クロステスト、スライディングチェック、交差検証(CV)、
・AICおよびBICなどの基準の数学的検証、
・A/Bテスト、スプリットテスト、
・スタッキング、
に基づいて、選択される。
【0107】
さらに別の例において、コンピュータデバイスの性能が低い場合、ランダムフォレストが選択され、それ以外は、人工ニューラルネットが選択される。
【0108】
システムの一態様において、機械学習は、事前に作成された未訓練の検出モデル(すなわち、モデルのパラメータが、入力データの分析に基づいて、所定の閾値よりも高い精度で出力データを作成することができない、検出モデル)に対して行われる。
システムのさらに別の態様において、検出モデルによる機械学習法は、少なくとも、
・決定木に基づいた勾配ブースティング、
・決定木、
・k近傍法、
・サポートベクトルマシン(Support Vector Machine:SVM)法、
である。
【0109】
システムのさらに別の態様において、検出モデル作成モジュール131は、さらに、検出モデル機械学習モジュール132からの要求に応じて検出モデルを作成するように設計される。その場合、あるハイパーパラメータおよび機械学習法は、前の検出モデルに対して選択されたハイパーパラメータおよび機械学習法とは異なるように選択される。
【0110】
検出モデル機械学習モジュール132は、検出モデルを訓練するように設計される。その場合、検出モデルのパラメータは、得られた挙動パターンについての得られた畳み込み関数を用いて計算され、検出モデルは、上記検出モデルの計算されたパラメータを用いて少なくとも1つの挙動パターンに基づいてファイルの悪意性の程度を計算するための1組のルールを構成する。
【0111】
たとえば、検出モデルは、訓練選択肢準備モジュール111によって選択された1組の既知のファイル上で訓練される。このとき、上記1組のファイルは、安全なファイルを60%、悪意あるファイルを40%含む。
【0112】
システムの一態様において、ファイルの悪意性の程度は、0~1の数値で表され、0は、ファイルが安全であることを示し、1は、ファイルに悪意があることを示す。
【0113】
システムのさらに別の態様において、挙動ログの分析に基づいて形成された挙動パターンの数の変化に依存するファイルの悪意性の程度が単調に変化することを保証する、検出モデルの訓練方法が選択される。
【0114】
たとえば、ファイルの悪意性の程度における単調な変化は、後続する各挙動パターンを分析した時に、計算された悪意性の程度が、前に計算された悪意性の程度以上になるであろうことを意味する(たとえば、10番目の挙動パターンの分析の後では、計算された悪意性の程度は、0.2に等しく、50番目の挙動パターンの分析の後では、悪意性の程度は、0.4となり、100番目の挙動パターンの分析の後では、悪意性の程度は、0.7となる)。
【0115】
システムのさらに別の態様においては、検出モデル機械学習モジュール132は、さらに、下記のように設計される。
・ファイルのテスト選択肢からファイルの悪意性の判定の精度を判定するために、ファイルのテスト選択肢からファイルの分析に基づいて形成されて得られた挙動ログに対して訓練された検出モデルの検査を実行する。
・検査の結果が否定的なものであった場合には、リクエストを、少なくとも、
・検出モデルの訓練に使用されている現在のものとは異なるファイルの選択肢を準備するために、訓練選択肢準備モジュール111に送り、かつ、
・現在のものとは異なる、新しい検出モデルを作成するために、検出モデル作成モジュール131に送る。
【0116】
さらに、訓練された検出モデルの検査は、下記のことを伴う。上記検出モデルは、訓練選択肢準備モジュール111によって選択された1組のファイルに基づいて訓練されている。そのために、上記ファイルが安全なファイルであるか、または悪意あるファイルであるかが分かっていた。悪意あるファイルを検出するためのモデルが正しく訓練されていること、すなわち、上記検出モデルは悪意あるファイルを検出するとともに安全なファイルを看過することができるということを検証するために、上記モデルの検査を行う。このため、上記検出モデルは、訓練選択肢準備モジュール111によって選択された別の1組のファイルからのファイルが悪意あるものであるかどうかを判定するために使用される。なお、上記ファイルが悪意あるものであるかどうかは事前に分かっている。このように、「見逃された」悪意あるファイルの数、および、検出された安全なファイルの数を判定する。見逃された悪意あるファイルおよび検出された安全なファイルの数が所定の閾値よりも大きい場合には、その検出モデルは、不適切に訓練されたものであると認識され、上記検出モデルに対して、(たとえば、ファイルの別の訓練選択肢に関して、前のものとは異なる検出モデルのパラメータの値を使用するなどして)機械学習を反復することが必要とされる。
【0117】
たとえば、訓練されたモデルの検査を実行するとき、ファイルのテスト選択肢から悪意あるファイルを検出する際に、第1および第2の種類のエラーの数を検査する。
そのようなエラーの数が所定の閾値よりも大きい場合、ファイルの新たな訓練およびテスト選択肢が選択されて、新たな検出モデルが作成される。
【0118】
さらに別の例において、ファイルの訓練選択肢が10,000個のファイルを含み、このうち、8,500個が悪意あるものであり、1,500個が安全なものであった。検出モデルの訓練後、検出モデルを、1200個のファイルを含むファイルのテスト選択肢に関して、検査した。上記ファイルのテスト選択肢のうち、350個が悪意あるものであり、850個が安全なものであった。実行された検査の結果に従って、350個の悪意あるファイルのうち15個(4%)が検出に失敗した。一方、850個の安全なファイルのうち102個(12%)が誤って悪意あるものと認識された。未検出の悪意あるファイルの数が5%を超えるか、または、偶然に検出された安全なファイルが0.1%を超える場合、訓練された検出モデルは、不適切に訓練されたものであると認める。
【0119】
システムの一態様において、システムの挙動ログは、システムの挙動の、事前に形成されたログおよびシステムの上記挙動ログの形成後にインターセプトされたコマンドに基づいて、さらに形成される。
【0120】
たとえば、ファイルの悪意性または安全性について判定することが必要であるファイルの実行の開始後に、インターセプトされた実行可能なコマンドおよび上記コマンドを表すパラメータが挙動ログに記録される。これらのコマンドおよびパラメータの分析に基づいて、そのファイルの悪意性の程度を計算する。分析の結果に基づいてファイルが悪意あるものかまたは安全なものであるかの判定がなされなかった場合、コマンドのインターセプトを継続してもよい。インターセプトされたコマンドおよび上記コマンドを表すパラメータは、古い挙動ログまたは新しい挙動ログに記録される。第1の場合、挙動ログに記録された全てのコマンドおよびパラメータの分析、すなわち、悪意性の程度を計算するために前に使用されたコマンドおよびパラメータにも基づいて、悪意性の程度を計算する。
【0121】
悪意性程度計算モジュール142は、以下のように設計される。
・挙動ログ形成モジュール112から得られた挙動ログおよび検出モデル機械学習モジュール132から得られた検出モデルに基づいて、悪意性の程度を計算する。ファイルの悪意性の程度は、実行対象ファイルの悪意ある挙動を表す定量的な特徴である。(たとえば、0~1の範囲、つまり、0、すなわち、ファイルが安全な挙動のみを有する、から1、すなわち、上記ファイルが所定の悪意ある挙動を有する、の範囲内にある)
・計算された悪意性の程度を資源管理モジュール143へ送信する。
【0122】
資源管理モジュール143は、コンピュータシステムのセキュリティを確保する際に使用するために、得た悪意性の程度の分析に基づいて、コンピュータシステムの計算資源を割り当てるように設計される。
【0123】
システムの一態様において、コンピュータシステムの計算資源は、少なくとも、
・RAM空き容量、
・ハードディスクの空き領域の容量、
・(たとえば、より深いエミュレーションにより)アンチウイルススキャニングに費やすことができる、空きプロセッサ時間(プロセッサ時間の分量)、
である。
【0124】
システムのさらに別の態様においては、悪意性の程度の分析は、先行する悪意性の程度の各計算の後における悪意性の程度の値における変化の動態を判定すること、および、少なくとも、
・悪意性の程度の値が増加した場合には、コンピュータシステムの追加資源を割り当てること、
・悪意性の程度の値が減少した場合には、事前に割り当てられた、コンピュータシステムの資源を解放すること、
にある。
【0125】
図2は、悪意あるファイルを検出するためのモデルを用いて機械学習する方法の構成図である。
【0126】
悪意あるファイルを検出するためのモデルを用いて機械学習する方法の構成図は、ファイルを訓練する選択肢を準備するステップ211と、挙動ログを形成するステップ212と、挙動パターンを形成するステップ221と、畳み込み関数を形成するステップ222と、検出モデルを作成するステップ231と、検出モデルを訓練するステップ232と、コンピュータシステムの挙動を追跡するステップ241と、悪意性の程度を計算するステップ242と、コンピュータシステムの資源を管理するステップ243と、を含む。
【0127】
ステップ211において、訓練選択肢準備モジュール111は、所定の基準にしたがって、ファイルのデータベースから少なくとも1つのファイルを選択するために使用される。この場合、選択されたファイルに基づいて、ステップ232で検出モデルの訓練を行う。
【0128】
ステップ212において、挙動ログ形成モジュール112は、下記のことをするのに使用される。
・少なくとも1つのコマンドを、少なくとも
・ステップ211において選択されたファイルを実行する、
・ステップ211において選択されたファイルの作動のエミュレーションをする
最中にインターセプトする。
・インターセプトされた各コマンドについて、上記コマンドを表す少なくとも1つのパラメータを決定する。
・インターセプトされたコマンドおよび決定されたパラメータに基づいて、得られたファイルの挙動ログを形成する。この場合、挙動ログは、ファイルからのインターセプトされたコマンド(以後、コマンドと称する)の組を表し、各コマンドは、上記コマンドを表す少なくとも1つの定義されたパラメータ(以後、パラメータと称する)に対応する。
【0129】
ステップ221において、挙動パターン形成モジュール121を使用して、ステップ212で形成した挙動ログから選択されたコマンドおよびパラメータに基づいて、少なくとも1つの挙動パターンを形成する。この場合、挙動ログは、ファイルからの実行可能なコマンド(以後、コマンドと称する)の組を表し、各コマンドは、上記コマンドを表す少なくとも1つのパラメータ(以後、パラメータと称する)に対応し、挙動パターンは、少なくとも1つのコマンドおよびパラメータからなる組であり、上記パラメータは、上記コマンドおよびパラメータからなる組からのコマンド全てを表す。
【0130】
ステップ222において、畳み込み関数形成モジュール122を使用して、ステップ221で形成した挙動パターンの畳み込み関数を形成し、その結果、上記挙動パターンに対して実行した上記畳み込み関数の結果の逆畳み込み関数の結果は、指定された値よりも大きい上記挙動パターンとの類似性を有する。
【0131】
ステップ231において、検出モデル作成モジュール131を使用して、検出モデルを作成する。そのため、少なくとも、
・検出モデルによる機械学習法が選択され、
・訓練モデルのパラメータが初期化される。この場合、検出モデルによる機械学習の開始に先立って初期化された訓練モデルのパラメータは、ハイパーパラメータとして知られる。
【0132】
上記検出モデルの作成は、ステップ211で選択されたファイルのパラメータに依存する。
【0133】
ステップ232において、検出モデル機械学習モジュール132を使用して、ステップ231において作成した検出モデルを訓練する。この場合、上記検出モデルのパラメータは、ステップ222において形成され、かつ、ステップ221において形成された挙動パターンについて実行された畳み込み関数を用いて計算される。ここで、検出モデルは、検出モデルの、計算されたパラメータを用いて、少なくとも1つの挙動パターンに基づいて、ファイルの悪意性の程度を計算するためのルールの一群を構成する。
【0134】
ステップ241において、挙動追跡モジュール141を用いて下記のことを実施する。
・コンピュータシステム上を走っているファイルによって実行される少なくとも1つのコマンドをインターセプトする、
・インターセプトされたコマンドに基づいて上記システムの挙動ログを形成する。
【0135】
ステップ242において、悪意性程度計算モジュール142を使用して、ステップ241で形成したシステムの挙動ログおよびステップ232で訓練した検出モデルに基づいて、悪意性の程度を計算する。
【0136】
ステップ243において、資源管理モジュール143は、コンピュータシステムのセキュリティを確保する際に使用される、ステップ242で計算したような悪意性の程度の分析に基づいて、計算資源を割り当てるために使用される。
【0137】
図3は、挙動パターンの数の関数としての悪意性の程度の変化の動態例を示す。
【0138】
挙動パターンの数の関数としての悪意性の程度における変化の動態例は、悪意あるファイルの実行中に形成された挙動パターンの数の関数としての悪意性の程度における任意の変化の動態を示すグラフ311と、悪意あるファイルの実行中に形成された挙動パターンの数の関数としての悪意性の程度における単調な変化の動態を示すグラフ312と、安全なファイルの実行中に形成された挙動パターンの数の関数としての悪意性の程度における任意の変化の動態を示すグラフ321と、安全なファイルの実行中に形成された挙動パターンの数の関数としての悪意性の程度における単調な変化の動態を示すグラフ322と、を含む。
【0139】
システムの一態様においては、実行対象ファイルの悪意性の程度は、0(ファイルが絶対的に安全な挙動をとる)~1(ファイルが所定の悪意ある挙動をとる)の範囲内の値をとる。
【0140】
グラフ311は、悪意あるファイルの実行中に形成された挙動パターンの数の関数として悪意性の程度における任意の変化の動態を示す。
【0141】
最初、上記ファイルを実行する時点では、形成された挙動パターンの数は大きいものではなく、さらに、実行対象ファイルに悪意ある活動はない、または、最小であることがある(たとえば、データは初期化されるが、それは安全なファイルを含む多くのファイルにとって当然のことである)。その結果、計算された悪意性の程度は、0と殆ど変わらず、所定の閾値(以後、安全性基準と称する)を超えるものではない。悪意性の程度が上記閾値を超えると、実行対象ファイルの挙動は、安全であるとはみなされなくなる(グラフ上では、この閾値は、点線によって示されている)。
【0142】
しかし、やがて実行対象ファイルの悪意ある活動が増加し、悪意性の程度が、1に近づき始め、安全性基準を上回り、一方、悪意性の程度が、所定の閾値(以後、悪意性基準と称する)、すなわち、それを超えると実行対象ファイルの挙動が悪意あるものであるとみなされる閾値(グラフにおいて、この閾値は破線によって示されている)に到達しないことがある。
【0143】
増加期間の後、悪意ある活動が止むと、悪意性の程度は、再び0へ向かうことになる(時間A)。ある時間において、悪意性の程度は悪意性基準より大きくなり(時間B)、実行対象ファイルの挙動は、悪意あるものと認識され、その結果、ファイル自体が悪意あるものと認識される。
【0144】
悪意ある活動が増加し始める時間から、かなり遅れて、ファイルを悪意あるものとして認識することがある。その理由は、上述したアプローチは、悪意性の程度が急激に高くなる場合によく反応するからであり、これは、実行対象ファイルの悪意ある活動が長期間にわたり明瞭に発現する時に、最も頻繁に生じる。
【0145】
悪意ある挙動が偶発的に生じた場合(グラフ311左側参照)、計算された悪意性の程度は、上記値に到達せず、その後、実行対象ファイルの挙動の悪意性と、その結果としての実行対象ファイル自体の悪意性について判定がなされる。
【0146】
形成された各挙動パターンに基づかずに悪意性の程度が計算される場合(たとえば、コンピュータデバイスの性能が高くないなどの理由による)、時間A(悪意ある活動が開始する時間)および時間C(悪意ある活動が終了する時間)において悪意性の程度が計算され、一方、時間B(悪意ある活動が生じている時間)においては計算されず、その結果、計算された悪意性の程度が悪意性基準を超えず、また、実行対象ファイルの活動が悪意あるものと認識されず、よって、悪意あるファイルが検出されないことになるという状況がありうる。
【0147】
グラフ312は、悪意あるファイルの実行中に形成された挙動パターンの数の関数として悪意性の程度における単調な変化の動態を示す。
【0148】
最初、上記ファイルを実行する時点では、形成された挙動パターンの数は大きいものではなく、さらに、実行対象ファイルに悪意ある挙動はない、または、最小であることがある(たとえば、データは初期化されるが、それは、安全なファイルを含む、多くのファイルにとって当然のことである)。その結果、計算された悪意性の程度は、0と殆ど変わらず、所定の閾値(以後、安全性基準と称する)を超えるものではない。悪意性の程度が上記閾値を超えると、実行対象ファイルの挙動は、安全であるとはみなされなくなる(グラフ上では、この閾値は、点線によって示されている)。
【0149】
しかし、やがて実行対象ファイルの悪意ある活動が増加し、悪意性の程度が、1に近づき始め、安全性基準を上回り、一方で、悪意性の程度が、所定の閾値(以後、悪意性基準と称する)、すなわち、それを超えると、実行対象ファイルの挙動が悪意あるものであるとみなされる閾値(グラフ上では、この閾値は破線によって示されている)に到達しないことがある。
【0150】
増加期間(A~B期間)の後、悪意ある活動が止む(B~A期間)ことがあるが、悪意性の程度はもはや低下せず、実行対象ファイルのいかなる悪意ある活動の間においても増加し続けるのみである。ある時間において、悪意性の程度が悪意性基準よりも高くなり(時間D)、実行対象ファイルの挙動は、悪意あるものとして認識される。その結果、ファイル自体が悪意あるものとして認識される。
【0151】
さらに、悪意ある活動が発現した直後に、ファイルを悪意あるものとして認識する時が来ることがある。その理由は、上述したアプローチが、悪意性の程度が緩やかに増加することによく反応するからであり、これは、実行対象ファイルの悪意ある活動が長期間にわたって明瞭に発現する時と、あまり目立たない悪意ある活動が頻繁に偶発的に生じる時の両方において起こる。
【0152】
悪意ある活動が偶発的に生じる場合(グラフ311左側参照)、計算された悪意性の程度は、時間の経過とともに、その値に達することがあり、到達後に、実行対象ファイルの挙動の悪意性および実行対象ファイル自体の悪意性について判定がなされる。
【0153】
形成された各挙動パターンに基づかずに悪意性の程度が計算される場合(たとえば、コンピュータデバイスの性能が高くないなどの理由による)、時間A(悪意ある活動が開始する時間)および時間C(悪意ある活動が終了する時間)において悪意性の程度が計算され、一方、時間B(悪意ある活動が生じている時間)では計算されず、それにもかかわらず、悪意性の程度は単調に変化するので、計算された悪意性の程度は、その値が増加するのみであり、時間Cにおいては、悪意性の程度は悪意性基準を超えることになり、実行対象ファイルの活動は悪意あるものとして認識され、その結果、悪意あるファイルが検出される、という状況がありうる。
【0154】
グラフ321は、安全なファイルの実行中に形成された挙動パターンの数の関数として悪意性の程度における任意の変化の動態を示す。
【0155】
最初、上記ファイルを実行する時点で、形成された挙動パターンの数は大きいものではなく、さらに、悪意ある活動、たとえば、実行対象ファイルに対して、悪意あるファイルの実行中にも実行されることがある(たとえば、ファイルの削除、コンピュータネットワークにおけるデータの転送など)「疑わしい」コマンドが実行されるといった活動はない。したがって、計算された悪意性の程度は、0ではなく、かつ、所定の閾値(以後、安全性基準と称する)、すなわち、それを超えると、実行対象ファイルの挙動が安全なものとみなされなくなる閾値(グラフにおいて、この閾値は点線で示されている)を超えない。
【0156】
しかし、多数の「疑わしい」コマンドを実行することが原因となって、実行対象ファイルの悪意ある活動はやがて増加し、悪意性の程度が1に近づき始め、一方で、悪意性の程度は、所定の閾値(以後、悪意性基準と称する)、すなわち、それを超えると、実行対象ファイルの挙動が悪意あるものであるとみなされる閾値(グラフにおいて、この閾値は破線で示されている)に到達しないものの、安全性基準を超えることもあり、その結果、ファイルは、安全なものとみなされなくなり、「疑わしい」ものとなることがある。
【0157】
増加期間の後、悪意ある活動が止むことがあり、悪意性の程度は再び0に近づく(時間C)。
【0158】
形成された各挙動パターンに基づかずに悪意性の程度が計算される場合(たとえば、コンピュータデバイスの性能が高くないなどの理由による)、時間B(活動が、悪意あるものに最も類似する、すなわち「疑わしい」ものになる時)においては悪意性の程度が計算されるが、時間A(「疑わしい」活動が増加している時)または時間C(「疑わしい」活動が減少している時)においては計算されず、その結果、計算された悪意性の程度が安全性基準を超え、実行対象ファイルの活動が「疑わしい」ものとみなされ(安全なものとはみなされず)、よって、安全なファイルが安全であるとみなされなくなるという状況がありうる。
【0159】
グラフ321は、安全なファイルの実行中に形成された挙動パターンの数の関数として悪意性の程度における単調な変化の動態を示す。
【0160】
最初、上記ファイルを実行する時点では、形成された挙動パターンの数は大きいものではなく、さらに、悪意ある活動、たとえば、実行対象ファイルに対して、悪意あるファイルの実行中にも実行される(たとえば、ファイルの削除、コンピュータネットワークにおけるデータの転送など)「疑わしい」コマンドが実行されるといった活動はなく、したがって、計算された悪意性の程度は、0ではなく、かつ、所定の閾値(以後、安全性基準と称する)、すなわち、それを超えると、実行対象ファイルの挙動が安全なものとみなされなくなる閾値(グラフにおいて、この閾値は点線で示されている)を超えない。
【0161】
しかし、多数の「疑わしい」コマンドを実行することが原因となって、実行対象ファイルの悪意ある挙動がやがて増加し、悪意性の程度が1に近づき始め、一方で、悪意性の程度が、所定の閾値(以後、悪意性基準と称する)、すなわち、それを超えると、実行対象ファイルの挙動が悪意あるものであるとみなされる閾値(グラフ上で、この閾値は破線で示されている)に到達せず、かつ、安全性基準も超えないことがある。その結果、ファイルは安全なものとみなされ続ける。
【0162】
増大期間(A~B期間)の後、悪意ある活動が止む(B~A期間)ことがあるが、悪意性の程度はもはや減少せず、実行対象ファイルのいずれの悪意ある活動中に増加し続けるのみとなるものの、安全性の係数は超えない。その結果、実行対象ファイルの活動は、安全なものとみなされ、よって、ファイルは、安全であるとみなされる。
【0163】
形成された各挙動パターンに基づかずに悪意性の程度が計算される場合(たとえば、コンピュータデバイスの性能が高くないなどの理由による)、時間B(活動が、悪意あるものに最も類似する、すなわち「疑わしい」ものになる時)においては悪意性の程度が計算されるが、時間A(「疑わしい」活動が増加している時)または時間C(「疑わしい」活動が減少している時)においては計算されず、それにもかかわらず、悪意性の程度は単調に変化するので、計算された悪意性の程度は、その値が増加するのみであり、時間A、B、Cにおいて、悪意性の程度は安全性基準を超えず、実行対象ファイルの活動は安全なものとみなされ、その結果、安全なファイルが安全であるとみなされる、という状況がありうる。
【0164】
さらに、ファイルを「疑わしい」ものとしてみなす時間が、「疑わしい」活動の発現の後に生じないことがある。これは、上述したアプローチによって、悪意性の程度における滑らかな増加がもたらされ、それによって、悪意性の程度の増加における鋭いピークを回避することができるからである。
【0165】
図4は、挙動パターンの要素間における関係の一例を示す図である。
【0166】
挙動パターンの要素間における関係図の例は、コマンド411(白抜きの丸)と、パラメータ412(網掛けの丸)と、1つのパラメータを備えた挙動パターン例421と、1つのコマンドを備えた挙動パターン例422とを含む。
【0167】
ファイルの実行中に、コマンド411がインターセプトされ、下記の通り、上記コマンドを表すパラメータ412が決定された。
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}
【0168】
コマンド411およびパラメータ412に基づいて、挙動パターン(421、422)を形成し、挙動パターンの要素間における関係を判定する。
【0169】
第1のステップにおいて、1つのコマンド411と上記コマンドを表す1つのパラメータ412とを含むパターンを形成する。
{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}
【0170】
示した例においては、インターセプトされた8つのコマンド(上記コマンドを表すパラメータを備える)に基づいて、19個の挙動パターンが形成されている。
【0171】
第2のステップにおいて、1つのパラメータ412と、上記パラメータ412によって表すことができる全てのコマンド411とを含むパターンを形成する。
{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}
【0172】
示した例では、インターセプトされた8つのコマンド(上記コマンドを表すパラメータを備える)に基づいて、さらに、7つの挙動パターンが形成されている。
【0173】
第3のステップにおいて、いくつかのパラメータ412と、上記パラメータ412によって表すことができる全てのコマンド411とを含むパターンを形成する。
{c1, c2, c3, p1, p2}
{c4, c5, p5, p6}
{c2, c4, p6, p7}
【0174】
示した例では、インターセプトされた8つのコマンド(上記コマンドを表すパラメータを備える)に基づいて、さらに、3つの挙動パターンが形成されている。
【0175】
図5は、悪意あるファイルを検出するために訓練されたモデルを使用して、悪意あるファイルを検出するシステムの構成図である。
【0176】
悪意あるファイルを検出するために訓練されたモデルを使用して悪意あるファイルを検出するシステムの構成図は、分析対象ファイル501と、挙動ログ形成モジュール112と、検出モデル選択モジュール520と、検出モデルデータベース521と、挙動ログ分析モジュール530と、悪意性程度計算モジュール540と、決定テンプレートデータベース541と、分析モジュール550と、からなる。
【0177】
システムの一態様において、システムは、さらに、実行対象ファイルの挙動ログ形成モジュール112を含み、下記のように設計されている。
・少なくとも1つのコマンドを、少なくとも、
・ファイル501の実行、
・ファイル501の実行のエミュレーション、
の最中にインターセプトする。
・インターセプトした各コマンドについて、上記コマンドを表す少なくとも1つのパラメータを決定する。
・インターセプトしたコマンドおよび決定したパラメータに基づいて、上記ファイルに対する挙動ログを形成する。この場合、インターセプトしたコマンドおよび上記コマンドを表すパラメータを、最初にインターセプトしたコマンドから直近にインターセプトしたコマンドまで時間順に挙動ログに記録する(以後、挙動ログへの書き込みと称する)。
・構築された挙動ログを、挙動ログ分析モジュール530および検出モデル選択モジュール520へ送信する。
【0178】
システムのさらに別の異なる態様において、挙動ログは、ファイル501の実行可能なコマンド(以後、コマンドと称する)からなる1組であり、各コマンドは、上記コマンドを表す少なくとも1つのパラメータ(以後、パラメータと称する)に対応する。
【0179】
システムのさらに別の態様において、実行対象ファイル501のコマンドのインターセプトおよびインターセプトされたコマンドのパラメータの決定は、上記コンピュータデバイス上で、悪意あるファイルを検出するために訓練されたモデルを使用して、悪意あるファイルを検出するためのシステムが走っているコンピュータデバイスの性能の分析に基づいて行われる。これは、少なくとも、以下のことを含む。
・次のコマンドがインターセプトされる時まで、実行対象ファイル501の悪意性について分析することが可能かどうか(挙動ログ分析モジュール530、悪意性程度計算モジュール540、および分析モジュール550を用いて)判定する。
・悪意性に関する実行対象ファイル501の分析の結果、上記コンピュータデバイスの計算資源が所定の閾値未満まで減少するかどうかを判定する。上記コンピュータデバイスの計算資源は、少なくとも、
・上記コンピュータデバイスの性能、
・上記コンピュータデバイスの空きRAM容量、
・(ハードディスクなどの)上記コンピュータデバイスの情報記憶メディア上の空き領域の容量、
・上記コンピュータデバイスが接続されるコンピュータネットワークの帯域幅、
を含む。
【0180】
悪意あるファイルの検出用に訓練されたモデルを用いて悪意あるファイルを検出するシステムの性能を高めるために、実行対象ファイル501に対する実行可能なコマンド全てを含んでいるとは限らない挙動ログを分析する必要がある。これは、悪意性についてファイル501を分析するための活動を全て連続して行うと、実行対象ファイル501に対して連続して行われる2つのコマンドの間隔よりも多くの時間がかかるからである。
【0181】
例えば、実行対象ファイル501のコマンドは0.001秒毎に実行され(かつ、その結果、インターセプトされる)が、ファイル501の悪意性についての分析は0.15秒かかる。その結果、上記時間の間隔中にインターセプトされるコマンド全てが無視され、したがって、150番目毎のコマンドのみインターセプトするだけで充分となる。
【0182】
検出モデル選択モジュール520は、以下のように設計されている。
・実行対象ファイル501の挙動ログから選択されたコマンドとパラメータに基づいて、悪意あるファイルを検出するためのモデルを少なくとも2つ、検出モデルデータベース521から選択する。なお、悪意あるファイルを検出するためのモデルは、悪意性の程度を判定するための決定ルールである。
・悪意性程度計算モジュール540に、悪意あるファイルを検出するためのモデルを全て送信する。
【0183】
システムの別の一態様においては、検出モデルデータベース521に保存されている悪意あるファイルを検出するためのモデルは、少なくとも1つの安全なファイルと1つの悪意あるファイルに対する機械学習法を用いて、あらかじめ訓練されている。
【0184】
悪意あるファイルを検出するためのモデルについては、
図1~
図4で、より詳細に説明する。
【0185】
システムのさらに別の異なる一態様において、検出モデルによる機械学習法は、少なくとも、
・決定木に基づいた勾配ブースティング、
・決定木、
・k近傍法、
・サポートベクトル、
である。
【0186】
システムのさらに別の一態様において、検出モデルを訓練する方法によれば、挙動ログの分析に基づいて形成された挙動パターンの数の変化に依存する、ファイルの悪意性の程度における単調な変化が確実なものとなる。
【0187】
例えば、計算されたファイル501の悪意性の程度は、ファイル501の挙動ログの分析に基づいて形成された挙動パターンの数に依存して、単調に増加するのみか、または、変化しないことがある。ファイル501の実行を開始時には、形成された挙動ログの数は小さく、計算されたファイル501の悪意性の程度は、0とほとんど異ならない。やがて、形成されたパターンの数が増加し、計算されたファイル501の悪意性の程度も増加するか、または、ファイル501の悪意ある活動がない場合は、計算される悪意性の程度は変化しない。したがって、悪意あるファイル501の実行中にファイルの悪意性の程度を計算するときはいつでも(または、いずれの挙動ログの記録から挙動パターン形成が始まっても)、悪意性の程度は、ファイル501の悪意ある活動が生じたか、または上記悪意性の程度を計算する時間までに生じなかったかを反映する。
【0188】
システムのさらに別の一態様において、検出モデルデータベース521から選択された、悪意あるファイルを検出するためのモデルは、所定の固有の特性を備えた悪意あるファイルを検出するために訓練される。
【0189】
例えば、検出モデルデータベース521に保存された検出モデルを、以下のファイルを検出するように訓練してもよい。
・グラフィカルユーザインターフェース(Graphical User Interface:GUI)を有するファイル
・コンピュータネットワークにおいてデータを交換するファイル
・ファイル(「Trojan-Cryptors」系の悪意あるファイルなど)を暗号化するファイル
・伝播ネットワーク脆弱性(たとえば、「Net-Worms」系の悪意あるファイル)、P2Pネットワーク(たとえば、「P2P-Worms」系の悪意あるファイル)などに利用するファイル。
【0190】
このように、悪意あるファイルを検出するために訓練されたいくつかのモデルを用いて、悪意あるファイルを検出してもよい。たとえば、悪意あるファイル「WannaCry.exe」、すなわち、実行中にユーザのコンピュータデバイス上のデータを暗号化し、ファイルが実行されるユーザのコンピュータデバイスと同じコンピュータネットワークに接続された他のコンピュータデバイスに、上記データのコピーを送信する悪意あるファイルは、検出モデル1、2、および3を用いて検出することができる。上記検出モデル1は、脆弱性を利用するファイルを検出するように訓練され、上記検出モデル2は、ファイルを暗号化するように設計されたファイルを検出するよう訓練され、上記検出モデル3は、(例えば、支払フォームや金銭の合計などに関して)なされた要求どおりに解釈可能な文字情報を含むファイルを検出するよう訓練される。さらに、計算した悪意性の程度が所定の閾値を超えるときと同様に、上記モデルを用いて計算した悪意性の程度は、互いに異なることがある。たとえば、悪意あるファイル501を検出することに成功した、悪意あるファイル検出用モデルを用いた場合、下記表に記載したような結果となりうる。
【表1】
【0191】
計算した悪意性の程度が0.78より大きい場合、ファイル501は、悪意あるものとみなされる。さらに、悪意性の程度(0.78など)によって、悪意性の程度が計算されたファイルに悪意がある(78%)、または安全である(22%)と判明する確率が特徴づけられる。悪意あるファイルを検出するためのいくつかのモデルを使用して、ファイル501に悪意があると見なすことができる場合、ファイル501に悪意があると判明する確率はより高くなる。たとえば、悪意あるファイルを検出するためのモデルであって、表1にそのデータが示されたモデルについて集計した悪意性の程度は、下記の式によって計算することができる。
【数25】
式中、
w
totalは、集計した悪意性の程度を表し、
w
iは、モデルiを使用して計算した悪意性の程度を表し、
nは、悪意性の程度を集計するために用いる、悪意あるファイル検出用モデルの数を表す。
【0192】
このように、得られた悪意性の程度集計値(0.999685)は、所定の閾値(0.78)、すなわち、計算されたファイルの悪意性の程度がその閾値を超えると、ファイルが悪意あるものとみなされる閾値よりも、かなり高い。つまり、悪意あるファイルを検出するためのいくつかのモデルを使用することによって、悪意あるファイルの判定の精度を、実質、向上させることができ、かつ、悪意あるファイルの検出中に生じる第1および第2の種類のエラーを減少させることができる。
【0193】
さらに別の例において、悪意あるファイルを検出するためのいくつかのモデルを使用することによって、集計された悪意性の程度は、悪意あるファイルを検出するための各モデルを別々に使用する場合よりも、はるかに早く、所定の閾値、すなわち、計算されたファイルの悪意性の程度がその閾値を超えると、ファイルが悪意あるものとみなされる閾値に達することができる。たとえば、悪意あるファイルを検出するためのモデルであって、そのデータが表1に示されているモデルに関して、計算した悪意性の程度が単調に変化したとすると、ファイルがその後、悪意あるものとみなされる挙動ログからのコマンドの数を、以下の式によって計算することができる。
【数26】
式中、
I
detectは、挙動ログからのコマンドの数であって、その分析後にファイルが悪意あるものとみなされるコマンドの数を表し、
I
iは、挙動ログからのコマンドの数であって、モデルiを使用して、その分析後にファイルが悪意あるものとみなされるコマンドの数を表し、
w
iは、モデルiを使用して計算した悪意性の程度を表し、
nは、挙動ログからのコマンドの数を計算するために使用される悪意あるファイル検出用モデルの数であって、その分析後にファイルが悪意あるものとみなされる、モデルの数を表す。
【0194】
このように、挙動ログからのコマンドの数の得られた集計値(207)は、悪意あるファイル検出用モデルのうちの1つ(モデル2)によって、分析後にファイルが悪意あるものとみなされる挙動ログからのコマンドの最初期の数(288)よりも、はるかに低い。つまり、悪意あるファイルの検出のためのモデルをいくつか使用することで、悪意あるファイルの判定の速度(すなわち効率)を、実質、向上させることができる。
【0195】
さらに別の例において、検出モデルデータベース521に保存された異なる検出モデルを、必ずしも固有ではない所定の特性をいくつか備えた悪意あるファイルを検出するように訓練してもよい。すなわち、検出モデル1は、グラフィカルユーザインターフェースを有し、かつ、コンピュータネットワークにおいてデータを交換するファイルを検出することができ、検出モデル2は、コンピュータネットワークにおいてデータを交換し、かつ、上記コンピュータネットワークにおいて、ネットワークの脆弱性を利用して伝播するファイルを検出することができる。ネットワークの脆弱性を利用してコンピュータネットワークにおいて伝播するファイルの一般的な特性のため、上記検出モデルは両方とも、上記悪意あるファイル「WannaCry.exe」を検出することができる。
【0196】
システムのさらに別の一態様において、検出モデルデータベース521から選択された、悪意あるファイルを検出するためのモデルは、ファイルの実行中に、少なくとも以下のことがなされたファイルについて、訓練された。
・実行対象ファイル501の挙動ログから選択されたコマンドと同じコマンドが実行された。
・実行対象ファイル501の挙動ログから選択されたパラメータと同じパラメータが使用された。
【0197】
例えば、コマンド「CreateFileEx」、「ReadFile」、「WriteFile」、および「CloseHandle」は、挙動ログから選択されたものであり、ファイルの暗号化を含む、ファイルの変更に使用される。「Trojan-Cryptors」系の悪意あるファイルの検出に使用するために訓練された検出モデルは、検出モデルデータベース521から選択される。
【0198】
さらに別の例において、パラメータ「8080」と「21」は、コンピュータネットワークとともに作用するためのコマンドを表す(たとえば、connect。すなわち、上記パラメータは電子アドレスへの接続ポートであることを示す。)挙動ログから選択された。コンピュータネットワークにおけるデータ交換を確実にするファイルの検出に使用するために訓練された検出モデルは、検出モデルデータベース521から選択される。
【0199】
挙動ログ分析モジュール530は、以下のように設計される。
・実行対象ファイル501の挙動ログから選択されたコマンドとパラメータに基づいて、少なくとも1つの挙動パターンを形成する。このとき、上記挙動パターンは、少なくとも1つのコマンドと1つのパラメータからなる組であり、上記パラメータは、上記組からのコマンド全てを表す。
・形成された全ての挙動パターンの畳み込みを計算する。
・形成した畳み込みを、実行対象ファイルの悪意性程度計算モジュール540に送信する。
【0200】
システムの別の一態様において、形成した挙動パターンの畳み込みは、所定の畳込関数に基づいて計算され、その結果、形成した挙動パターン全てに対して実行した上記畳み込み関数の結果の逆畳み込み関数は、所定の閾値よりも大きい、上記挙動パターンとの類似性の程度を有する。
【0201】
畳み込み関数の形成および使用(畳み込みの計算)については、
図1および
図2において、より詳細に説明する。
【0202】
悪意性程度計算モジュール540は、下記のように設計される。
・得られた、悪意あるファイル検出用各モデルを使用し、得られた畳み込みの分析に基づいて、実行対象ファイル501の悪意性の程度を計算する。
・計算された各悪意性の程度を分析モジュール550に送信する。
【0203】
システムの別の一態様において、決定テンプレートは、悪意性の程度で構成される。
【0204】
たとえば、上述したモデル1、2、3に基づいて計算された悪意性の程度の構成は、それぞれ、ペア{0.95, 374}、{0.79, 288}、{0.87, 302}の集合として表すことができる。
【0205】
さらに別の例において、上記モデル1、2、3、に基づいて計算された悪意性の程度の構成は、計算された悪意性の程度の中心的傾向の基準(0.87の場合は、算術平均)を表す。
【0206】
さらに別の例において、悪意性の程度の構成は、時間関数としての悪意性の程度における変化か、または悪意性の程度を計算するために用いられた挙動パターンの数における変化を表す。
【0207】
分析モジュール550は、下記のように設計される。
・得られた悪意性の程度に基づいて決定テンプレートを形成する。
・形成された決定テンプレートと、悪意あるファイルの分析に基づいて事前に形成された、決定テンプレートデータベース541から選択される所定の決定テンプレートの少なくとも1つとの間の類似性の程度が、所定の閾値を超える場合、実行対象ファイル501を悪意あるものとみなす。
【0208】
システムの別の一態様において、決定テンプレートは、悪意性程度計算モジュール540から得られた悪意性の程度の集合である。
【0209】
システムの別の一態様において、決定テンプレートは、時間関数としての悪意性の程度であるか、または、悪意性の程度を計算するのに用いた挙動パターンの数である。
【0210】
システムの別の一態様において、決定テンプレートデータベース541からの決定テンプレートは、検出モデルデータベース521からのモデルの訓練に使用した悪意あるファイルの分析に基づいて、形成される。
【0211】
たとえば、75,000個の安全なファイルと、25,000個の悪意あるファイルからなる、100,000個のファイルに基づいて、検出モデルを訓練(試験を含む)し、その後、検出モデルデータベース521に保存する。悪意あるファイルを検出するためのモデルを訓練した後、上記モデルを使用して、25,000個の上記悪意あるファイルのうちのいくつか(または全て)に対して決定テンプレートを形成し、その後、決定テンプレートデータベース541に入力する。すなわち、悪意あるファイル検出用モデルによる機械学習を、まず、ファイルの学習および試験サンプルに対して実施する。その結果、悪意あるファイル検出用のモデルのいくつかを訓練することができ、所定の固有の特性を備えた悪意あるファイルを検出するために、各モデルを訓練する。検出モデルの全てを訓練した後、悪意あるファイル検出用に訓練されたモデルのうち、どのモデルが、ある悪意あるファイル(上記例においては、25,000個の上記悪意あるファイル)を検出するかを判定する。これにより、ある悪意あるファイルを、ある1組の悪意あるファイル検出用モデルを用いて検出することができ、別の悪意あるファイルを、別の1組の悪意あるファイル検出用モデルを用いて検出することができ、さらに別の悪意あるファイルを、悪意あるファイル検出用の上記モデルから選択された、いくつかの、悪意あるファイル検出用モデルを用いて検出することができることがわかる。悪意あるファイル検出用のどのモデルを用いれば、どの悪意あるファイルを検出することができるかに関して得られたデータに基づいて、決定テンプレートを形成する。
【0212】
システムの別の一態様において、分析モジュール550は、さらに、以下のように設計される。形成した決定テンプレートと、決定テンプレートデータベース541から選択される所定の決定テンプレートの少なくとも1つとの類似性の程度が、所定の閾値を超え、一方で、悪意あるファイル検出用の上記モデルを用いて計算した悪意性の程度が、所定の閾値を超えない場合に、実行対象ファイル501の挙動ログから選択されたコマンドとパラメータに基づいて、検出モデルデータベース521からの少なくとも1つの検出モデルを再訓練する。
【0213】
図6は、悪意あるファイルを検出するために訓練されたモデルを使用して、悪意あるファイルを検出する方法の構成図である。
【0214】
悪意あるファイルを検出するために訓練されたモデルを用いて悪意あるファイルを検出するための方法の構成図は、分析対象ファイルを実行するステップ610と、挙動ログを形成するステップ620と、挙動パターンを形成するステップ630と、畳み込みを計算するステップ640と、検出モデルを選択するステップ650と、悪意性の程度を計算するステップ660と、決定テンプレートを形成するステップ670と、上記ファイルに悪意があると認識するステップ680と、上記検出モデルを再訓練するステップ690と、を含む。
【0215】
ステップ610において、挙動ログ形成モジュール112を用いて、少なくとも、
・分析対象ファイル501を実行するか、または、
・分析対象ファイル501の実行をエミュレートする。
【0216】
ステップ620において、挙動ログ形成モジュール112を用いて、分析対象ファイル501のための挙動ログを形成する。そのために、
・少なくとも1つの実行対象コマンドをインターセプトし、
・インターセプトされた各コマンドに対して、上記コマンドを表す、少なくとも1つのパラメータを決定し、
・インターセプトされたコマンドと上述したように決定したパラメータに基づいて、上記ファイル501の挙動ログを形成する。
【0217】
ステップ630において、挙動ログ分析モジュール530を用いて、実行対象ファイル501の挙動ログから選択されたコマンドとパラメータに基づいて、少なくとも1つの挙動パターンを形成する。このとき、上記挙動パターンは、少なくとも1つのコマンドと1つのパラメータからなる組であり、上記パラメータは、上記組からのコマンド全てを表す。
【0218】
ステップ640において、挙動ログ分析モジュール530を用いて、ステップ630で形成した全ての挙動パターンの畳み込みを計算する。
【0219】
ステップ650において、検出モデル選択モジュール520を用いて、実行対象ファイル501の挙動ログから選択されたコマンドとパラメータに基づいて、検出モデルデータベース521から、悪意あるファイル検出用モデルを少なくとも2つ選択する。このとき、上記悪意あるファイル検出用モデルは、悪意性の程度を判定するための決定ルールである。
【0220】
ステップ660においては、ステップ650で選択された悪意あるファイル検出用の各モデルを使用して、ステップ640で計算した畳み込みの分析に基づき、悪意性程度計算モジュール540を用いて、実行対象ファイル501の悪意性の程度を計算する。
【0221】
ステップ670においては、ステップ660で得られた悪意性の程度に基づき、分析モジュール550を使用して決定テンプレートを形成する。
【0222】
ステップ680においては、ステップ670で形成した決定テンプレートと、決定テンプレートデータベース541から選択された、少なくとも1つの所定の決定テンプレートとの類似性の程度が、所定の閾値を超える場合、分析モジュール550を用いて、実行対象ファイル501を悪意あるものとみなす。
【0223】
ステップ690においては、形成した決定テンプレートと、決定テンプレートデータベース541から選択された、少なくとも1つの所定の決定テンプレートとの類似性の程度が、所定の閾値を超え、一方、悪意あるファイル検出用の上記モデルを使用して計算した悪意性の程度が、所定の閾値を超えない場合に、実行対象ファイルの挙動ログから選択されたコマンドとパラメータに基づいて、分析モジュール550を用いて、検出モデルデータベース521からの少なくとも1つの検出モデルを再訓練する。
【0224】
図7は、悪意あるファイルを検出するシステムの一例を示す。
【0225】
悪意あるファイルを検出するためのシステムの構成図は、分析対象ファイル501と、ファイル分析モジュール112と、検出モデルデータベース521と、データ収集モジュール710と、上記ファイル501の挙動に関するデータ711と、パラメータ計算モジュール720と、パラメータ計算モデル721と、分析モジュール730と、基準形成モデル731と、パラメータ補正モジュール740と、を含む。
【0226】
ファイル分析手段112、ファイル501、検出モデルデータベース521、および(分析モジュール550の異なる態様としての)分析モジュール730について、
図1、
図2、
図5、および
図6において、より詳細に説明する。
【0227】
データ収集モジュール710は、ファイル分析モジュール112によって収集されたファイル501の実行挙動に関するデータ711に基づいて、その挙動を特徴づける特徴ベクトルを形成するよう設計される。このとき、上記ベクトルの特徴は、数の集合として形成され、収集されたデータ711の畳み込みである。
【0228】
収集したデータの畳み込みの形成例は、
図1における挙動パターン形成モジュール121の動作についての説明の中で示される。
【0229】
システムの別の一態様において、ファイル501の実行挙動に関するデータ711は、少なくとも、以下のものを含む。
・実行対象ファイル501に含まれる、またはファイル501の実行のプロセスで解釈可能なコマンド、上記コマンドに送信される属性、および戻り値。
・ファイル501の実行中に変更可能な、RAMの領域に関するデータ。
・ファイル501の静的パラメータ。
【0230】
たとえば、上記コマンドは、コンピュータのプロセッサの命令(もしくは命令群)、WinAPI関数、または、第三者の動的ライブラリからの関数である。
【0231】
さらに別の例において、ファイル501は、プロセッサコマンド(またはdllライブラリの場合、あるプロセスのコマンド)および/またはコマンドに転送されるパラメータとしてファイル501の実行中に解釈される、生データを含む。特に、そのようなデータはポータブルコードでありうる。
【0232】
さらに別の例において、RAM領域のデータは、以下のものであってもよい。
・(たとえば、ファジーハッシュの使用による)上記データのメモリ領域の畳み込み。
・上記メモリ領域からどの語彙素が抽出されたか、また、その使用(たとえば、使用頻度、加重特性、他の語彙素との関係など)に関して、どのような統計が収集されたかに基づいた、上記データのメモリ領域の語彙分析の結果。
・サイズ、オーナ(プロセス)、および使用権など、上記メモリ領域の静的パラメータ。
【0233】
ファイル501の静的パラメータは、ファイルを特徴づけ(識別する)、かつ、ファイル501の実行、分析、または変更中に変化しないか、または、ファイル501を実行する時までファイル501を特徴づける、パラメータである。
【0234】
特に、例えば、ファイル501の静的パラメータは、ファイル501の実行または挙動の特性に関する情報(すなわち、ファイル501の実行の結果を予測することを可能にする情報)を含んでいてもよい。
【0235】
さらに別の例において、ファイルの静的パラメータは、ファイルのサイズ、ファイルを作成または変更する時間、ファイルのオーナ、および、ファイルの資源(電子またはIPアドレス)などである。
【0236】
システムの別の一態様において、ファイル501の実行挙動に関するデータ711は、様々な資源(入力データチャンネル)から収集され、少なくとも、以下のものを含む。
・分析対象ファイル501によって実行されたコマンドのログ。
・オペレーティングシステム、またはオペレーティングシステムの管理下で実行されるアプリケーション(分析対象ファイル501を除く)によって、実行されるコマンドのログ。
・コンピュータネットワークを介して得たデータ。
【0237】
データ収集モジュール710によって形成された特徴ベクトルに基づいて、訓練されたパラメータ計算モデル
721を用いて、悪意性の程度および安全性の限界程度を計算するように、パラメータ計算モジュール720は設計される。上記悪意性の程度は、ファイル501に悪意があると判明する確率を特徴づける数値である。上記安全性の限界程度は、悪意性の程度および安全性の限界程度に依存する(
図9参照)所定の条件が満たされる場合にファイル501が間違いなく安全である確率を特徴づける数値である。連続して計算される上記各程度の収集は、所定の時間法則によって表される。
【0238】
システムの別の一態様において、入力データ(入力データ源、または所定の基準によって選別された出力データ源からのデータ)の各チャンネルに対して、(長さNの実数のベクトルを有する)特徴を抽出するためのシステムを作成する。すなわち、
・所与のチャンネルが、情報(たとえば、アンパックされた実行対象ファイルのログまたはシーケンス)を連続して得ることに関連する場合、入力シーケンスに対する特徴を単一のベクトルへと集合させるために、システムを追加で作成する。
・システムを作成して、所与のチャンネルからの特徴を長さKの新しいベクトルに変換する。さらに、このベクトルにおける値は、入力シーケンスの新しい要素が加工されると、単に単調に増加することがある。
【0239】
システムの別の一態様において、特徴の抽出、集合、および変換用のシステムは訓練用パラメータに依存することがあり、パラメータは、モデル全体を訓練するステップにおいて後で調節される。すなわち、
・全てのアクティブチャンネルから到着する、長さKのベクトルは、特定の長さを有する1つのベクトルに、単調に集められる(例えば、最大値は素子毎に得られる)。
・集められた、単調に増加するベクトルは、1つの実数に変換され、上記実数は、調査対象プロセスの疑わしい性質を特徴づける(たとえば、上記ベクトルは、そのベクトルの要素を追加することによって、または、ベクトルのノルムを計算するなど、所定のアルゴリズムに従ってベクトルの要素に対してアクションを実行することによって、変換される)。
【0240】
システムの別の一態様において、パラメータ計算モデル721は、少なくとも1つの安全なファイルおよび1つの悪意あるファイルに関する機械学習法によって、あらかじめ訓練されている。
【0241】
システムの別の一態様において、パラメータを計算するためのモデル721を用いた機械学習法は、少なくとも
・決定木に基づいた勾配ブースティング、
・決定木、
・k近傍法、
・サポートベクトル、
である。
【0242】
システムの別の一態様において、少なくとも、計算される悪意性の程度または安全性の限界程度は、それぞれ、ファイル501の静的データの分析に基づいて、ファイル501の開始時に計算される悪意性の程度および安全性の限界程度に依存する。
【0243】
たとえば、悪意性の程度および安全性の限界程度を、下記の式によって計算してもよい。
【数27】
式中、
ωは、悪意性の程度を表し、φは、安全性の限界程度を表す。
【0244】
ω0は、悪意性の程度の開始値を表し、φ0は、安全性の限界程度の開始値を表し、上記開始値はそれぞれ、ファイル501の実行パラメータには依存しないが、外部条件(オペレーティングシステムの作動パラメータなど)には依存する。
【0245】
ω(t)は、悪意性の程度を計算するのに使用される時間法則を表し、φ(t)は、安全性の限界程度を計算するのに使用される時間法則を表す。
【0246】
さらに、上記時間法則は、互いに依存する、すなわち、事前に計算された、悪意性の程度および安全性の限界程度に依存する。
【数28】
【0247】
図9に、上述したシステムの別の態様について、より詳細に開示する。
【0248】
システムの別の一態様において、訓練されたパラメータ計算モデル721は、ファイルの悪意性の程度およびファイルの安全性の限界程度を計算するためのルールを集めたものであり、ファイル501の実行挙動に関して見出されたデータ711に依存する。
【0249】
システムの別の一態様において、連続的に計算された悪意性の程度群と連続的に計算された安全性の限界程度群を示す時間法則は、本質的に単調である。
【0250】
たとえば、時間関数として悪意性の程度を表す曲線は、単調に増加する関数(f(x)=ax+bなど)によって表されてもよい。
【0251】
システムの別の一態様において、連続的に計算された悪意性の程度群と連続的に計算された安全性の限界程度群を示す時間法則は、区分的に単調な性質を有する、すなわち、特定の時間間隔において単調な性質を有する。
【0252】
説明したシステムの作動中に、(計算資源に関する制限、コンピュータ時間、最小性能などに関する要求により)、悪意性の程度を絶えず(連続的に、または、所与の周期で)判定することはできないことが多く、したがって、悪意性の程度および安全性の限界程度は、計算可能な時間の間隔(所定のものではないが、ファイル501の実行のプロセスにおいて計算することができる)において計算されうる。そのような計算もまた、ある所定の時間法則に基づいており、そのため、入力パラメータはファイルの実行のプロセス中に計算される。すなわち、ファイルの計算時に書き込むことが可能である。
【数29】
【0253】
さらに、悪意性の程度および安全性の限界程度を計算する時間は、事前に計算した悪意性の程度および安全性の限界程度に依存する。
【数30】
【0254】
たとえば、ファイル501が開始され、最初の10秒間、上記ファイルの悪意性の程度は単調に増加し、10秒後に、上記ファイルの悪意性の程度は半分となり、その後、もう一度単調に増加し始める。
【0255】
分析モジュール730は、ファイル501の実行挙動について収集されたデータ711が、パラメータ計算モジュール720によって計算されるように悪意性の程度および安全性の限界程度に基づいて構築される、悪意性を判定するための所定の基準を満たす場合に、悪意あるファイル501の検出に関して判定するよう設計される。このとき、悪意性の程度と安全性の限界程度との間に確立される相関性という点において、上記基準は、(基準形成モデル731によって提供される)ファイルの分類のためのルールである。
【0256】
システムの別の一態様において、悪意性の程度と安全性の限界程度との間の相関性は、少なくとも、
・悪意性の程度と悪意性の境界条件の間の隔たりについての所定の閾値からの差、
・悪意性の程度および安全性の限界程度を表す曲線間の所与の時間間隔に結びつけられる領域の所定の閾値からの差、
・時間関数として悪意性の程度および悪意性の境界条件を表す曲線の相互増加率の所定値からの差、
である。
【0257】
たとえば、上記相関性の最も特徴的な例を
図9に示す。
【0258】
計算した悪意性の程度および安全性の限界程度の分析(
図9参照)に基づき、パラメータ補正モジュール740は、パラメータ計算モデル721を再訓練するよう設計されている。その結果、悪意性の程度および安全性の限界程度を表す時間法則が変化すると、上記時間法則に基づいて得られた値の相関性が最大に向かう傾向がある。
【0259】
システムの別の一態様において、パラメータ計算モデル721は、上記モデルを使用すると、のちに形成される基準が少なくとも下記のことを確実にするように、再訓練される。
・悪意性の程度および安全性の限界程度を判定する精度は、訓練されていないパラメータ計算モデルを使用する場合よりも高い。
・計算資源の利用率が、訓練されていないパラメータ計算モデルを使用する場合よりも低い。
【0260】
たとえば、再訓練(またはさらなる再訓練)後に、悪意性の程度および安全性の限界程度を表す曲線の値間の相関係数は、より大きくなる(1に向かう傾向がある)。
【0261】
その結果、パラメータ計算モデル721を定期的に再訓練している間、第1および第2種(偽陽性)のエラーの発生の確率は、常に低くなる。さらに、上述した様々な再訓練の基準を用いることによって、再訓練されたモデル721を用いて悪意あるファイルを検出するためのシステムは、最初(再訓練の初期段階)に第1および第2種のエラーの低下率が非常に高くなり、その結果、パラメータ計算モデル721の再訓練をほとんど繰り返すことなく、悪意あるファイル検出用システムの有効性が、100%に向かって急激に増加することが確実となる。
【0262】
図8は、悪意あるファイルを検出する方法の例を示す。
【0263】
悪意あるファイルを検出するための方法の構成図は、特徴ベクトルを形成するステップ810と、パラメータを計算するステップ820と、悪意あるファイルの検出に関する判定をするステップ830と、パラメータ計算モデルをさらに再訓練するステップ840と、を含む。
【0264】
ステップ810において、ファイル501の実行挙動に関して収集したデータ711に基づいて、ファイルの実行挙動を特徴づける特徴ベクトルを形成し、上記特徴ベクトルは、数の集合の形をとる収集データの畳み込みである。
【0265】
ステップ820において、上記のように形成した特徴ベクトルに基づき、訓練されたパラメータ計算モデル721を使用して、悪意性の程度、および安全性の限界程度を計算する。このとき、上記悪意性の程度は、ファイル501に悪意があると判明する確率を特徴づける数値であり、上記安全性の限界程度は、ファイル501に悪意があると明確に判明する確率を特徴づける数値である。連続的に計算された上記程度群は所定の時間法則によって説明される。
【0266】
ステップ810~820は、様々な連続する、分析対象ファイル501の実行の時間間隔に対して行われる。
【0267】
ステップ830において、ファイル501の実行挙動について収集されたデータ711が、ステップ820において計算されるように悪意性の程度および安全性の限界程度に基づいて構築される、悪意性を判定するための所定の基準を満たす(
図9参照)場合に、悪意あるファイル501の検出に関する判定がなされる。上記基準は、悪意性の程度と安全性の限界程度との間に確立した相関性によりファイルを分類するためのルールである。
【0268】
ステップ840において、計算された悪意性の程度および安全性の限界程度の分析に基づいて、パラメータ計算モデル721は、さらに再訓練され、その結果、悪意性の程度および安全性の限界程度を表す時間法則が変化すると、その法則に基づいて得られた値の相関性が最大に向かう傾向がある。
【0269】
図9は、挙動パターンの数の関数としての、悪意性の程度と安全性の限界程度の変化の動態例を示す。
【0270】
図911では、分析対象ファイル501の悪意性の程度が、時間の経過とともに、増加(本質的には、公式化された挙動パターンの数の増加)する様子が観察されるという状況が示されている。さらに、増加は、安全性の限界程度においても(
図3に示す悪意性の基準の一般的な場合)同様に観察される。
【0271】
悪意あるファイル501の程度がファイル501の安全性の限界程度(
図911のB)を超え始めたときに、悪意あるファイル501の検出に関する判定が行われる。
【0272】
ファイル501の実行中にも、また、全体としてのオペレーティングシステムの条件の分析の際にも、「疑わしい」活動が示される場合に、上記のような状況が観察される。このようにして、第1種のエラーが発生する確率は低くなる。たとえ疑わしい活動がシステムの作動中に示されても(すなわち、悪意があるとはまだみなすことができないが、安全であるとも見なすことができない活動、たとえば、初期ファイルの削除が追って行われるアーカイブパッキング)、ファイル501の悪意性の程度を計算する際、悪意あるファイルの検出に関して肯定的な判定が、ファイル501の実行中ではなくシステムの作動中の疑わしい活動に、大抵の場合、基づかずになされるようにして、上記活動は認識される。すなわち、ファイル501を悪意あるものとして認識することに関する最終判定に、ファイル501の実行活動が貢献する度合いは、システムの活動の貢献度よりも大きい。
【0273】
たとえば、ユーザがコンピュータ上のデータのアーカイビングを行い、その結果、ハードディスクからデータを繰り返し読み出し、その後、ファイルの名称変更または削除が行われる場合に、同様の状況が観察されうる。これは、一般利用者(事務員など)のシステムに対して、悪意ある暗号化プログラムが作動している疑わしい活動とみなされうる。なぜなら、(ユーザから得られた統計データに基づいた)そのような活動は、ユーザに対しては、めったに観察されないからである。
【0274】
たとえば、ユーザコンピュータ上のソフトウェアの活動の分析中に、標準ウイルス撃退アプリケーションは、特定のアプリケーションが「疑わしい」挙動をしている、すなわち、特定のアプリケーションの挙動がウイルス撃退アプリケーションの所定のルールに従っていないという警告を、(いずれの積極的対策もとらずに)発することがある。しかし、上述したシステムは、所定のルールによって動作せず、代わりに、動的に活動の変化を評価し、その結果、悪意があるが未知であるファイル501に対して、そのファイルを悪意あるものとして検出する。
【0275】
さらに別の例において、ファイル501を実行する際の活動の変化は、コンピュータネットワークにおけるデータ送信の結果であり、送信されるデータの特性(頻度、量など)に依存し、また、悪意ある活動が行われている(たとえば、リモート管理(バックドア)不正プログラムが走っている)ことを示しうる。そのような活動が長引けば、上記活動に悪意があるとみなされる可能性はより高くなる。なぜなら、上記活動は、ユーザコンピュータ上の典型的なネットワーク活動とは顕著に異なるからである。
【0276】
図912において、時間の経過とともに、分析対象ファイル501の悪意性の程度が増加し、安全性の限界程度が減少している様子が観察されるという状況が示されている。
【0277】
悪意あるファイル501の程度がファイル501の安全性の限界程度(
図912のB)を超え始めたときに、悪意あるファイル501の検出に関する判定が行われる。
【0278】
図911に描写されている状況とは逆であるが、オペレーティングシステムの条件の分析中に「疑わしい」活動が観察されない場合に、上記のような状況が確認される。このようにして、第2種のエラー(悪意あるファイルの見落とし)が発生する確率は低くなる。特にファイルまたは全体としてのオペレーティングシステムの実行中、挙動の残りが「疑わしい」とみなされない場合、疑わしい活動は、悪意あるファイルの検出について肯定的な判定を下すことに、「より強い」影響を及ぼす。
【0279】
たとえば、そのような状況は、ユーザコンピュータ上のリモート管理不正プログラムの作動中に観察されることがあり、上記プログラムの結果、悪意ある活動が、偶発的にのみ現われる、すなわち、連続する上記活動の発生毎に、より「詳細に」分析されるべきである、つまり、活動に悪意があるとみなす基準は絶えず低下するはずである。しかし、信頼できるアプリケーションをユーザコンピュータ上で実行し始める場合に、そのアプリケーションの挙動は、疑わしいとみなされる可能性があるが、そのアプリケーションは信頼できる(つまり、事前に悪意性があるかどうかを検査されている)ものであるため、疑わしいとはみなされず、その後、悪意性の限界度は高くなり、それによって、正当なファイルの挙動を悪意あるものとして認識してしまうことを防ぎ、かつ、悪意あるファイルの悪意ある挙動の検知をただ遅らせる。
【0280】
図913において、時間の経過とともに、分析対象ファイル501の悪意性の程度の増加が観察され、上記増加は、ゼロではなく、ある計算値から始まり、その結果、悪意性の基準に初期の場合よりも早く到達するか、または、初期の場合には到達していなかったであろうことに対して、上記基準に到達するという状況が描写されている。
【0281】
悪意あるファイル501の程度とファイル501の安全性の限界程度との差が、所定の閾値(
図913のB)未満になった場合に、悪意あるファイル501の検出に関する判定が行われる。さらに、特に、例えば、悪意あるファイル501の程度とファイル501の安全性の限界程度との差が、過去に別の所定の閾値(
図913のA)より小さかった(
図913のАと
図913のBとの差が大きくなりえた)場合にのみ、上記の判定が行われる。
【0282】
たとえば、未知の資源から得たか、または「疑わしい」方法(プロセスのメモリからデータをディスクに書き込むなど)によってコンピュータ上で形成したファイル501の実行中は、悪意性の程度は、より「疑わしくない」方法によって得られたファイルの悪意性の程度より最初は高いことがある。
【0283】
図914において描写されている状況は、
図911に描かれた状況と類似しており、唯一の違いは、悪意性の程度を表す曲線と安全性の限界程度を表す曲線は、連続していくつかの点で交差しているということである。そのような状況において、ファイル501を悪意あるものとしてみなす判定がなされるのは、上記曲線が交差しているという事実によるのではなく、交点の数により所定の閾値を超えたため、または、上記曲線によって切り取られた領域により所定の閾値を超えたためである。
【0284】
上述したこれらの図は、悪意あるファイルの検出の有効性を高め、かつ、悪意あるファイル501を検出するに際し、第1および第2種のエラーを減少させるのに役立つ。
【0285】
計算された悪意性の程度と安全性の限界程度との相関性の説明およびファイル501を悪意あるものとしてみなすことに関する決定は、下記の数学的またはアルゴリズム的な形で表現されうる。
【数31】
【0286】
図5は、一態様例に従って、悪意あるファイルを検出するためのシステムと方法の態様が実施されるコンピュータシステム20を示すブロック図である。なお、コンピュータシステム20は、上述したシステム100のいずれの構成要素にも相当しうる。コンピュータシステム20は、複数のコンピュータデバイスの形、または、単一のコンピュータデバイス、たとえば、デスクトップコンピュータ、ノート型コンピュータ、ラップトップコンピュータ、モバイルコンピューティングデバイス、スマートフォン、タブレットコンピュータ、サーバ、メインフレーム、埋込み型デバイス、およびその他の形のコンピュータデバイスなどの形をとりうる。
【0287】
図示するように、コンピュータシステム20は、中央処理装置(Central Processing Unit:CPU)21と、システムメモリ22と、システムバス23とを含み、システムバス23は、中央処理装置21と連携するメモリを含む様々なシステム構成要素を接続する。システムバス23は、バスメモリまたはバスメモリコントローラと、周辺バスと、ローカルバスとを含んでもよく、上記ローカルバスは、他のバスアーキテクチャと相互作用することができる。上記バスの例として、PCI、ISA、PCI-Express、HyperTransport(登録商標)、InfiniBand(登録商標)、Serial ATA、I2C,および、他の好適な相互接続が挙げられる。中央処理装置21(プロセッサとも称される)は、単一または複数のコアを有する1組または複数の組のプロセッサを含みうる。プロセッサ21は、本開示の技術を実行する1つ以上のコンピュータ実施可能コードを実行してもよい。システムメモリ22は、本開示において使用されるデータ、および/またはプロセッサ21によって実行可能なコンピュータプログラムを格納するための任意のメモリであってもよい。システムメモリ22は、RAM25などの揮発性メモリと、読み取り専用メモリ(Read Only Memory:ROM)24、フラッシュメモリ、またはこれらの組み合わせなどの不揮発性メモリと、を含んでもよい。基本入出力システム(Basic Input/Output System:BIOS)26は、ROM24を使用してオペレーティングシステムをローディングする際の要素など、コンピュータシステム20の要素間での情報の転送のための基本手続きを格納してもよい。
【0288】
コンピュータシステム20は、1つ以上の記憶装置、たとえば、1つ以上の取り外し可能な記憶装置27、1つ以上の取り外し不可能な記憶装置28、または、これらの組合せなどを含んでもよい。1つ以上の取り外し可能な記憶装置27および1つ以上の取り外し不可能な記憶装置28は、ストレージインターフェース32を介してシステムバス23に接続される。一態様において、記憶装置、および上記記憶装置に対応するコンピュータ可読記憶媒体は、コンピュータ命令、データ構造、プログラムモジュール、およびコンピュータシステム20の他のデータを格納するための電源非依存モジュールである。システムメモリ22、取り外し可能な記憶装置27、および取り外し不可能な記憶装置28は、様々なコンピュータ可読記憶媒体を使用してもよい。コンピュータ可読記憶媒体として、たとえば、キャッシュ、SRAM、DRAM、ゼロコンデンサRAM、対トランジスタRAM、eDRAM、EDO RAM、DDR RAM、EEPROM、NRAM、RRAM(登録商標)、SONOS、PRAMなどの機械メモリ、ソリッドステートドライブ(Solid State Drive:SSD)もしくはフラッシュドライブなどにおける、フラッシュメモリまたは他のメモリ技術、ハードディスクドライブまたはフロッピーディスクなどにおける、磁気カセット、磁気テープ、および磁気ディスク記憶装置、コンパクトディスク(Compact Disk:CD-ROM)またはデジタルバーサタイルディスク(Digital Versatile Disk:DVD)などにおける光記憶装置、および、所望のデータを格納するのに使用され、コンピュータシステム20によってアクセス可能な他の媒体が挙げられる。
【0289】
コンピュータシステム20の、システムメモリ22、取り外し可能な記憶装置27、および、取り外し不可能な記憶装置28を使用して、オペレーティングシステム35、追加のプログラムアプリケーション37、他のプログラムモジュール38、およびプログラムデータ39を格納してもよい。コンピュータシステム20は、キーボード、マウス、スタイラス、ゲームコントローラ、音声入力装置、タッチ入力装置などの入力装置40、もしくは、シリアルポート、パラレルポート、ユニバーサルシリアルバス(Universal Serial Bus:USB)などの1つ以上のI/Oポートを介するプリンタまたはスキャナーなどの他の周辺機器からのデータを通信するための周辺インターフェース46、または他の周辺インターフェースを含んでもよい。1つ以上のモニタ、プロジェクタ、または統合ディスプレイなどの表示装置47も、ビデオアダプタなどの出力インターフェース48を介して、システムバス23に接続してもよい。表示装置47に加えて、コンピュータシステム20は、スピーカおよび他の視聴覚装置などの他の周辺出力デバイス(図示せず)を備えていてもよい。
【0290】
コンピュータシステム20は、1つ以上のリモートコンピュータ49とのネットワーク接続を用いて、ネットワーク環境で操作してもよい。リモートコンピュータ(またはコンピュータ)49は、コンピュータシステム20の性質を表す上で、上述の要素の大半または全てを含む、ローカルコンピュータワークステーションまたはサーバであってもよい。ルータ、ネットワークステーション、ピア接続の機器、または他のネットワークノードなどの他の装置もまた、コンピュータネットワークで存在しうるが、これらに限定されない。コンピュータシステム20は、ローカルエリアコンピュータネットワーク(Local-Area Computer Network:LAN)50、ワイドエリアコンピュータネットワーク(Wide-Area Computer Network:WAN)、イントラネット、および、インターネットなどの1つ以上のネットワークを介してリモートコンピュータ49と通信するための、1つ以上のネットワークインターフェース51またはネットワークアダプタを含んでいてもよい。ネットワークインターフェース51として、たとえば、イーサネット(登録商標)インターフェース、フレームリレーインターフェース、SONETインターフェース、および無線インターフェースが挙げられる。
【0291】
本開示の態様は、システム、方法、および/またはコンピュータプログラム製品であってもよい。コンピュータプログラム製品は、プロセッサに本開示の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含んでもよい。
【0292】
コンピュータ可読記憶媒体は、コンピュータシステム20などのコンピュータデバイスのプロセッサがアクセスすることができる命令またはデータ構造の形をとるプログラムコードを保存格納することができる有形の装置でありうる。上記コンピュータ可読記憶媒体は、電子記憶装置、磁気記憶装置、光記憶装置、電磁気記憶装置、半導体記憶装置、またはこれらの任意の好適な組合せであってもよい。たとえば、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、ポータブルコンパクトディスク読み取り専用メモリ(Compact Disc Read-Only Memory:CD-ROM)、デジタルバーサタイルディスク(DVD)、フラッシュメモリ、ハードディスク、ポータブルコンピュータディスケット、メモリスティック、フロッピーディスク、または、さらに、機械的に符号化された装置、たとえば、パンチカードもしくは命令が記録される溝における突起構造などを含んでもよい。本開示において用いられるように、コンピュータ可読記憶媒体は、それ自体が一時的な信号、たとえば、電波、自由に伝播する他の電磁波、導波管もしくは伝送媒体を介して伝播する電磁波、または、ワイヤを介して送信される電気信号であると解釈されるべきではない。
【0293】
本開示において説明したコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から、それぞれのコンピュータデバイスにダウンロードすることができるか、または、ネットワーク、たとえば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、および/または無線ネットワークを介して、外部コンピュータもしくは外部記憶装置にダウンロードすることができる。上記ネットワークは、銅製伝送ケーブル、光学伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、および/または、エッジサーバを含んでもよい。各コンピュータデバイスにおけるネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピュータデバイス内のコンピュータ可読記憶媒体に保管するために、コンピュータ可読プログラム命令を転送する。
【0294】
本開示の操作を実施するためのコンピュータ可読プログラム命令は、組立て命令、命令セットアーキテクチャ(Instruction-Set-Architecture:ISA)命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状況設定データ、またはソースコードもしくはオブジェクトコードであってもよく、上記ソースコードまたは上記オブジェクトコードは、オブジェクト指向プログラミング言語および従来の手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組合せで表される。コンピュータ可読プログラム命令を、スタンドアローンのソフトウェアパッケージとして、完全にユーザコンピュータ上、もしくは部分的にユーザコンピュータ上で実施するか、または、部分的にユーザコンピュータかつ部分的にリモートコンピュータ上で実施するか、完全にリモートコンピュータもしくはサーバ上で実施してもよい。後者のケースでは、リモートコンピュータは、LANもしくはWANを含む任意のタイプのネットワークを介して、ユーザコンピュータに接続してもよいし、または、上記接続は、外部コンピュータに対して(たとえば、インターネットを介して)行ってもよい。いくつかの態様において、プログラマブルロジック回路、書き換え可能ゲートアレイ(Field-Programmable Gate Array:FPGA)、またはプログラマブルロジックアレイ(Programmable Logic Array:PLA)などを含む、電子回路は、本開示の態様を実施するために、電子回路を個別化するのに上記コンピュータ可読プログラム命令の状態情報を利用して、上記コンピュータ可読プログラム命令を実行してもよい。
【0295】
様々な態様において、本開示において説明したシステムおよび方法は、モジュールの観点から言及することができる。本開示において使用される「モジュール」という用語は、ハードウェアを用いて実装された、実世界の装置、構成要素、または構成要素の配置を指し、上記モジュールは、たとえば、特定用途向け集積回路(Application Specific Integrated Circuit:ASIC)もしくはFPGA、またはハードウェアとソフトウェアの組み合わせとして、たとえば、マイクロプロセッサシステムおよび(実行中に)マイクロプロセッサシステムを専用装置に変換する、モジュールの機能を実現するための1組の命令を用いて実行される。モジュールは、ハードウェア単体によって促進される一定の機能とハードウェアとソフトウェアの組み合わせによって促進される他の機能からなる2つの組み合わせとして実行されてもよい。ある実行において、モジュールの少なくとも一部、場合によっては、全部を、コンピュータシステムのプロセッサ(
図10において詳述したものなど)において実行してもよい。したがって、各モジュールを様々な好適な構成で実現してもよく、本開示に示した特定の実行に限られるものではない。
【0296】
明瞭化のために、態様のルーチンの特徴の全てが本明細書に開示されているわけではない。本開示のいずれの実際の実装の開発においても、開発者の特定の目標を達成するために多数の実装特有の決定が行われなければならず、これらの具体的な目標は、各種実装や各開発者に依って異なる。そのような開発努力は、複雑で時間がかかるが、本開示の恩恵を受ける当業者にとっては、日常的な工学的な取り組みであることが理解される。
【0297】
さらに、本開示において使用される表現または用語は、説明のためのものであって、限定するためのものではないことを理解されたい。その結果、当業者の知識と組み合わせ、本開示に提示される教示および指針に照らし合わせて、本明細書の用語または表現は当業者によって明白に解釈される。さらに、本明細書または特許請求の範囲におけるいずれの用語も、明示的に記載されていない限り、珍しいまたは特別な意味を有するとみなされることを意図するものではない。
【0298】
本開示における様々な態様は、説明によって本開示において言及された既知のモジュールの、現在および将来において既知となる等価物を包含する。さらに、態様および適用を示し、かつ説明してきたが、本開示の利益を有する当業者には、本明細書に開示された発明概念から逸脱することなく、上述した態様および適用よりも多くの変更が可能であることが明らかであろう。